Ansible: die Übergabe von ausgewerteten Variablen enthält
Habe ich ein Ansible-Playbook macht einen Anruf an ein anderes playbook übergabe-Parameter. Das funktioniert gut, aber wenn ich versuche zu übergeben, Variablen, Ansible explodiert. Hier ist mein playbook:
---
- name: This is the toplevel play for orchestration
hosts: nogroup
vars:
customer: myCustomer
sudo: yes
- include: amazon.yml application=FooServer instance_type=t2.micro instance_count=1 customer={{ customer }}
- include: amazon.yml application=BarServer instance_type=t2.micro instance_count=1 customer={{ customer }}
Ich versuche zu laufen:
ansible-playbook orchestration.yml -e "customer=otherCustomer"
und ich bekomme diese Fehlermeldung:
Traceback (most recent call last):
File "/usr/local/Cellar/ansible/1.7.2/libexec/bin/ansible-playbook", line 5, in <module>
pkg_resources.run_script('ansible==1.7.2', 'ansible-playbook')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 492, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 1350, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/Cellar/ansible/1.7.2/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/EGG-INFO/scripts/ansible-playbook", line 309, in <module>
sys.exit(main(sys.argv[1:]))
File "/usr/local/Cellar/ansible/1.7.2/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/EGG-INFO/scripts/ansible-playbook", line 191, in main
force_handlers=options.force_handlers
File "/usr/local/Cellar/ansible/1.7.2/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/playbook/__init__.py", line 180, in __init__
(self.playbook, self.play_basedirs) = self._load_playbook_from_file(playbook, vars)
File "/usr/local/Cellar/ansible/1.7.2/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/playbook/__init__.py", line 271, in _load_playbook_from_file
inc_vars, inc_path = self._get_include_info(play, basedir, play_vars)
File "/usr/local/Cellar/ansible/1.7.2/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/playbook/__init__.py", line 210, in _get_include_info
(k,v) = t.split("=", 1)
ValueError: need more than 1 value to unpack
Irgendwelche Ideen auf, wie um mir zu erlauben, übergeben Sie eine variable, die ich über die Befehlszeile festgelegt down über mehrere Ebenen umfasst, die in meinem playbook?
- versuchen Sie
{{customer}}
im Doppelzimmer Zitate:"{{customer}}"
- Eigentlich ist dies, weil Sie den gleichen Namen für Variablen:
customer={{ customer }}
. Nur umbenennen einer von Ihnen. Sagen wir:customerX={{ customer }}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ohne mehr Kontext ist es schwierig zu reproduzieren das Problem, aber meine Vermutung ist, dass dein problem kommt von der Tatsache, dass Sie versuchen zu variable
customer
zu sich selbst.Variablen definiert, die sich auf ein Spiel geerbt werden, durch die anschließende
include
Aussagen. Es gibt also keine Notwendigkeit Anhängencustomer={{customer}}
am Ende Ihrerinclude
Aussagen, da Sie bereits definiert haben es auf der Spiel-Ebene über:Hinweis: Diese variable wird überschrieben, durch einen neuen Wert über die Befehlszeile
-e
option.Versuchen Sie Ihr playbook wie diese:
Und verwenden, die ausgewertet
{{customer}}
auf die Aufgaben im Dateiamazon.yml
.Bekam es mit dem gleichen problem. Wie folgt gelöst: