Sou muito novo no ansible e, lendo as coisas, o que estou fazendo deve funcionar. Eu tenho o seguinte arquivo chamadoaws.yml
---
- hosts: localhost
connection: local
gather_facts: no
vars:
aws_region: us-east-1
tasks:
- name: Main VPC
ec2_vpc:
state: present
cidr_block: 10.5.0.0/16
resource_tags: {"environment": "prod"}
region: "{{ aws_region }}"
dns_hostnames: no
dns_support: yes
instance_tenancy: default
internet_gateway: yes
subnets:
- cidr: 10.5.151.96/27
az: "{{ aws_region }}a"
resource_tags: {"Name": "private"}
- cidr: 10.5.151.128/27
az: "{{ aws_region }}b"
resource_tags: {"Name": "private"}
- cidr: 10.5.151.160/27
az: "{{ aws_region }}c"
resource_tags: {"Name": "private"}
Quando executo o ansible-playbook, recebo o seguinte
$ ansible-playbook aws.yml
ERROR: Unable to find an inventory file, specify one with -i ?
Pelo que entendi, são os hosts: localhost deve substituir o uso de -i e, como estou tentando criar um VPC aqui, não quero ssh nas máquinas para construí-lo.
Obrigado
Você precisa apontar para um arquivo de inventário (mesmo que esteja vazio), porque o playbook diz apenas a quais hosts a peça se aplica, mas não fornece os meios para definir essa lista, o inventário sim. Felizmente,
localhost
está disponível por padrão: