Verwenden Sie eine Variable, um einen Wörterbuchschlüssel in Ansible zu konstruieren

Verwenden Sie eine Variable, um einen Wörterbuchschlüssel in Ansible zu konstruieren

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] }) }}

verwandte Informationen