Hallo, ich habe gerade angefangen, Ansible zu lernen. Ich versuche, ein Playbook wie folgt zu schreiben:
vpc-setup.ymlwelche einschließlich
hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Import VPC Variables
include_vars: vars/vpc_setup.md
- name: Create vprofile VPC
ec2_vpc_net:
name: "{{vpc_name}}"
cidr_block: "{{vpcCidr}}"
region: "{{region}}"
dns_hostnames: yes
tenancy: default
state: "{{state}}"
register: vpcout
der Fehler tritt in der 1. Zeile auf:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match
'all'
ERROR! A playbook must be a list of plays, got a <class 'ansible.parsing.yaml.objects.AnsibleMapping'> instead
The error appears to be in '/home/ubuntu/ansible-aws-vpc/vpc-setup.yml': line 1, column 1, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
hosts: localhost
^ here
Freundlich helfen
Antwort1
Ein Ansible-Playbook ist ein YAML-Dokument, das eine Liste von Plays enthält, möglicherweise mehr als eins. Da es sich um eine Liste handelt, benötigt der äußere Teil des Dokuments die YAML-Listennotation, also -
…
- name: VPC for thing
hosts: localhost
gather_facts: False
tasks:
Der Rest des Stückes folgt.
Weitere Beispiele in AnsiblesLeitfaden zur Einführung von Playbooks. Achten Sie genau auf die Einrückung und den äußeren -
Hinweis auf eine YAML-Liste.
Bonus-Tipps:
name
Stichworte zu Spielen dokumentieren einen Zweck. Halten Sie den Namen kurz, 50 Zeichen oder weniger.
connection: local
Auf Wiedergabeebene löschen . Wenn es gegen ein Muster mit mehreren Hosts ausgeführt wird, wird es viele Male ausgeführt, was wahrscheinlich nicht das ist, was Sie wollen.Impliziter lokaler Hostist bereits lokal, oder Sie können das Verbindungs-Plugin pro Host oder Gruppe auf Inventarebene festlegen.