Ich versuche, ein Dict in einer Hostvar zu aktualisieren, und der Name des Schlüssels wird mithilfe einer Variable (Knoten) erstellt. Wenn „Knoten“ beispielsweise 1 ist, möchte ich Hostvars[„fakehost“][„mydict“][„localaddress1“] aktualisieren. Hier ist mein Code:
- name: Read IPv4 of first interface
add_host:
name: "fakehost"
telium: "{{ hostvars['fakehost']['mydict'] | combine ({ 'localaddress{{ node }}' : ansible_all_ipv4_addresses[0] }) }}"
Ich kann nicht herausfinden, wie ich localaddress{{node}} mit Ansible konstruiere, und beschwere mich über die Syntax.
Antwort1
Verschachteln Sie Moustaches () nicht {{ }}
. Sobald Sie sich in einem Ausdruck befinden, sind Sie bereits in einem Jinja-Kontext und sollten beim Zugriff auf eine Variable keine zusätzlichen Trennzeichen verwenden.
telium: "{{ hostvars['fakehost']['mydict'] | combine ({ 'localaddress' ~ node: ansible_all_ipv4_addresses[0] }) }}