Ich bin ziemlich neu bei Ansible und nach dem, was ich tue, sollte das, was ich tue, funktionieren. Ich habe die folgende Datei namensaws.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"}
Wenn ich ansible-playbook darüber laufen lasse, bekomme ich folgendes
$ ansible-playbook aws.yml
ERROR: Unable to find an inventory file, specify one with -i ?
Meines Wissens nach soll hosts: localhost die Stelle von -i einnehmen und da ich hier versuche, ein VPC zu erstellen, möchte ich zum Erstellen keine SSH-Verbindung zu den Maschinen herstellen.
Danke
Antwort1
Sie müssen auf eine Inventardatei verweisen (auch wenn sie leer ist), da das Playbook nur angibt, für welche Hosts das Spiel gilt, aber keine Möglichkeit bietet, eine solche Liste zu definieren. Das Inventar tut dies. Glücklicherweise localhost
ist standardmäßig Folgendes verfügbar:
$ cat playbook.yml
---
- hosts: localhost
connection: local
gather_facts: no
tasks:
- shell: echo foo
$ ansible-playbook -i /dev/null playbook.yml
[WARNING]: provided hosts list is empty, only localhost is available
PLAY [localhost] **************************************************************
TASK: [shell echo foo] ********************************************************
changed: [localhost]
PLAY RECAP ********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0