sagen ich das WörterbuchWie wird dieses Wörterbuch in Ansible durchlaufen?
war_files:
server1:
- file1.war
- file2.war
server2:
- file1.war
- file2.war
- file3.war
und jetzt habe ich möchte nur eine Schleife über jedes Element (Schlüssel) und dann über jedes Element im Schlüssel (Wert). Ich habe diese
- name: Loop over the dictionary
debug: msg="Key={{ item.key }} value={{ item.value }}"
with_dict: "{{ war_files }}"
Und ich dies. Es ist natürlich richtig, aber ist NICHT was ich will.
ok: [localhost] => (item={'value': [u'file1.war', u'file2.war'], 'key': u'server1'}) => {
"item": {
"key": "server1",
"value": [
"file1.war",
"file2.war"
]
},
"msg": "Server=server1, WAR=[u'file1.war', u'file2.war']"
}
ok: [localhost] => (item={'value': [u'file1.war', u'file2.war', u'file3.war'], 'key': u'server2'}) => {
"item": {
"key": "server2",
"value": [
"file1.war",
"file2.war",
"file3.war"
]
},
"msg": "Server=server2, WAR=[u'file1.war', u'file2.war', u'file3.war']"
}
Ich möchte eine Ausgabe erhalten, die
"msg": "Server=server1, WAR=file1.war"
"msg": "Server=server1, WAR=file2.war"
"msg": "Server=server2, WAR=file1.war"
"msg": "Server=server2, WAR=file2.war"
"msg": "Server=server2, WAR=file3.war"
IOW sagt, wie kann ich eine Aufgabe zu iteriert über das Wörterbuch zu schreiben, so dass es durch jede Taste geht, und dann werden die Elemente innerhalb jeder Taste? Im Wesentlichen habe ich ein verschachteltes Array und möchte darüber iterieren?
Thank you! Hier mag ich Chef über Ansible, wo ich einfach Ruby schreiben kann, um über eine Datenstruktur zu iterieren. Im Wesentlichen haben Sie das hier mit Python gemacht, aber diese Syntax ist einfach hässlich. –
@ChrisF Ich schrieb Jinja2, nicht Python. –
Aber ja, ich stimme dir zu. Marionette und Chef haben deswegen einen Vorteil gegenüber Ansible. –