Ansible: register: ec2 / with_items: ec2.instances - ergibt "str-Objekt hat kein Attribut"

Erstellt am 18. Juni 2015  ·  3Kommentare  ·  Quelle: ansible/ansible

Ich habe ein Playbook, das Online-Beispielen sehr ähnlich ist:


Aufgaben:
- Name: Erstellen Sie eine EC2-Instanz
ec2:
[-schnipp-]
registrieren: ec2
- Name: ausdrucken
debug: msg="item has - {{ item.public_ip }}"
with_items: ec2.instances


Das gibt den Fehler:


fatal: [localhost] => Eine oder mehrere undefinierte Variablen: 'str object' hat kein Attribut 'public_ip'

Wenn ich es in {{ item }} ändere, sehe ich:

AUFGABE: [drucken] * * * * * * * * * * * * * * * * * * * *
ok: [localhost] => (item=ec2.instances) => {
"item": "ec2.instances",
"msg": "Element hat - ec2.instances"
}


Es scheint, dass 'ec2.instances' nur eine Zeichenfolge ist? Wenn ich schließlich "with_items: ec2.results" verwende, kann ich es durchlaufen, muss es aber als item.instances.0.public_ip . referenzieren

Haben Sie eine Idee, warum ec2_instances ein String und kein Wörterbuch ist?

Bearbeiten:
: arp_kiki/pts/55:0.08:neu; ansible --version ansible 1.5.4

nach dem Upgrade:

ok: [localhost] => (item=ec2.instances) => {
"item": "ec2.instances",
"msg": "Element hat - ec2.instances"
}

PLAY REKAPITULATION * * * * * * * * * * * * * * * * * * * * * *
localhost : ok=2 geändert=1 nicht erreichbar=0 fehlgeschlagen=0

: arp_kiki/pts/55:0.31:neu; ansible --version
ansible 1.9.1

Hilfreichster Kommentar

Verstanden. Ich nahm an, dass es sich um einen Fehler handelte, weil ich die Dokumentation verfolgte und unterschiedliche Ergebnisse erzielte.

Alle 3 Kommentare

Hi!

Vielen Dank für Ihr Interesse an Ansible. Es bedeutet uns aufrichtig viel.

Dies scheint eine Benutzerfrage zu sein, und wir möchten diese Art von Dingen entweder an die Mailingliste oder den IRC-Kanal weiterleiten.

Der Grund ist auch, dass with_items verwendet wird, daher gibt es mehrere Instanzen und die Ergebnisse jeder erstellten Instanz werden im ec2.results-Dikt gespeichert. Wenn es nur eine einzige Instanz gibt, vermeide with_items, dann solltest du bekommen, was du brauchst, oder wenn du mehrere Instanzen erstellen musst, um die öffentliche IP mit_items zu verwenden: ec2.results und item.public_ip

IRC: #ansible auf irc.freenode.net
Mailingliste: https://groups.google.com/forum/#!forum/ansible -project
Wenn Sie dort vorbeischauen können, würden wir uns freuen. Dies ermöglicht es uns, den Issue Tracker für Bugs, Pull Requests, RFEs und dergleichen zu führen.

Nochmals vielen Dank und wir freuen uns, Sie auf der Liste oder im IRC zu sehen. Vielen Dank!

Verstanden. Ich nahm an, dass es sich um einen Fehler handelte, weil ich die Dokumentation verfolgte und unterschiedliche Ergebnisse erzielte.

Ich bin gerade auf diesen Thread gekommen, weil ich den gleichen "Benutzerfehler" gemacht habe, dessen Ursache @bennojoy sehr prägnant beschrieben hat. Da dies eine sehr "nicht offensichtliche" Situation ist, wäre es großartig, zumindest in den Beispielen der ec2-Moduldokumentation darauf Bezug zu nehmen, da with_items ein sehr häufiges Muster sein wird Verwalten von Systemen in festgelegten Verfügbarkeitszonen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen