ansible AttributeError: 'list' - Objekt hat kein Attribut 'startswith'
Ich bin mit ansible und versuchen, um diese Aufgabe zu arbeiten, es schlägt fehl mit dieser Fehlermeldung:
Eine Ausnahme ist aufgetreten während der Ausführung der Aufgabe. Um die vollständige
traceback -, Einsatz -vvv. Der Fehler war: AttributeError: 'list' object hat
kein Attribut 'startswith' fatal: [test-1]: FAILED! =>
{"failed": true, "msg": "Unerwarteter Fehler während der Modul-Ausführung.",
"stdout": ""} msg: Unerwarteter Fehler während der Modul-Ausführung.
Der code ist:
- name: Register env Type
shell: facter configured_setup
register: setup
- name: transparency tasks
shell: {{some_script}} -t -a {{hosts}} -i {{inventory_hostname}}
register: test
when: setup.stdout == "something"
- name: fetch group_vars
fetch:
src:
- { "{{ item }}", when: setup.stdout == "something" }
dest: "{{group_vars}}"
flat: yes
with_items:
- "{{ test.stdout_lines[0] }}"
- "{{ test.stdout_lines[1] }}"
"fetch group_vars" ist die Aufgabe, die schlägt immer fehl, keine Ahnung, wie das funktionieren kann?
Was ich versuche zu tun ist, fügen Sie mehrere Quell-Dateien zum abrufen aus verschiedenen setvers.
Also ich will nicht noch mehr Zeilen unter "src":", sagte - { filename, when setup.stdout =="something else" }
Die voller Fehler ist:
Eine Ausnahme ist aufgetreten während der Ausführung der Aufgabe. Den vollständigen traceback ist:
Traceback (most recent call last):
Datei "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 96, in laufen
item_results = selbst._run_loop(items)
Datei "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 252, in _run_loop
res = self._execute(Variablen=task_vars)
Datei "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 446, in _execute
Ergebnis = selbst._handler.run(task_vars=Variablen)
Datei "/usr/lib/python2.7/site-packages/ansible/plugins/action/fetch.py", line 62, in laufen
Quelle = selbst._remote_expand_user(Quelle)
Datei "/usr/lib/python2.7/site-packages/ansible/plugins/action/init.py", line 460, in _remote_expand_user
wenn nicht Weg.startswith('~'): # FIXME: Windows-Pfade können beginnen mit "~ statt nur ~
AttributeError: 'list' - Objekt hat kein Attribut 'startswith'fatal: [test-1]: FAILED! => {"failed": true, "msg":
"Unerwarteter Fehler, die während der modulausführung.", "stdout": ""} msg:
Unerwarteter Fehler während der Modul-Ausführung.
src
verwendet drei Positionen. YAML halten, dass Sie abgesehen, aber es wird sehr schwer zu verwalten, selbst wenn Sie nicht konsistent sind.InformationsquelleAutor liad9122 | 2017-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den ansible die Dokumentation eindeutig , Holen, holt eine Datei, nicht eine Liste von Dateien. Zwar kann man eine Anwendung Programmieren zu beschäftigen, der eine Skalar-und eine Sequenz geladen, aus einer YAML-Dokument, das erfolgt nicht automatisch und würde mit ziemlicher Sicherheit spiegelt sich in der Dokumentation.
Da Sie bereits eine Sequenz auf einer höheren Ebene, verlängern Sie einfach.
Möglicherweise können zur Verringerung der Wiederholung etwas von der Verwendung des YAML-Anker und
merge
:Ansible wahrscheinlich erweitert die
{{...}}
vor der übergabe des Dokuments an den YAML-parser, andernfalls wird der Wert fürshell
in der "Transparenz der Aufgabe" würde einen Fehler auslösen. Aber man sollte wohl noch zitieren, wie Sie mit dem Wert fürdest
InformationsquelleAutor Anthon
So landete ich, dies zu tun (die funktioniert):
Mir ist auch aufgefallen, dass es vielleicht ein bug in ansible Bezug auf Register.
während der Verwendung der "wenn" - Anweisung, auch wenn die Bedingung nicht erfüllt ist, ist die register-Anweisung wirkt:
nur eine dieser Bedingungen nicht erfüllt werden, im Fall der erste ist, erfüllt die zweite Bedingung außer Kraft "variable"
when
. Warum denkst duregister
ignoriert werden sollte? Bedingung, die bestimmt, ob eine Aktion ausgeführt werden soll.register
deklariert ist, auf task-Ebene. Auch übersprungene Aufgaben registrieren Sie Ihre Ausgaben effektiv überschreiben die vorherigen Werte. Das ist, wie es funktioniert.InformationsquelleAutor liad9122