Ich versuche, Vorlagen mit verschiedenen Gruppen von Variablen für jede Iteration einer bestimmten Gruppe von Aufgaben zu verwenden. Zum Beispiel in einer der Aufgaben würde ich bestimmte Werte für Postgres setzen wollen:Verwenden Sie Dict in Vars mit Vorlagen in Ansible
- name: Define values for postgres-ds
template:
src: postgres-ds.xml.j2
dest: /opt/ear_{{ instance_control.value }}/postgres-ds.xml
vars: "{{ postgres_desenv }}"
notify: Restart Service
In Rolle/Vars/main.yaml, I definiert:
postgres_desenv:
var1: somevalue
var2: someothervalue
...
Trotzdem bekomme ich die folgende Fehlermeldung:
fatal: [rmt]: FAILED! => {
"failed": true,
"reason": "Vars in a Task must be specified as a dictionary, or a list of dictionaries
...
Wenn ich versuche, die gleiche Variable in einem anderen Kontext zu verwenden, es funktioniert gut:
- debug:
msg: "{{ item.key }} - {{ item.value }}"
with_dict: "{{ postgres_desenv }}"
Ich versuchte, die Antworten auf diese question zu folgen, aber ich bin immer noch fest.
Mein nächster Schritt ist eine Variable verwendet die Variable in Vars zu nennen, so etwas wie:
- name: Define values for postgres-ds
template:
src: postgres-ds.xml.j2
dest: /opt/ear_{{ instance_control.value }}/postgres-ds.xml
vars: postgres_{{ another_var }}
notify: Restart Service
Ihre Antwort hat mir geholfen, ich habe andere Felder im Dict erstellt, die es einfacher gemacht haben, später im Code auf die Variable zu verweisen. Statt eines Diktats habe ich jetzt ein Diktatdiktat. Vielen Dank. –