Utilice una variable para construir la clave del diccionario en Ansible

Utilice una variable para construir la clave del diccionario en Ansible

Estoy intentando actualizar un dict en un hostvar y el nombre de la clave se construye usando una variable (nodo). Por ejemplo, si 'nodo' es 1, entonces quiero actualizar hostvars['fakehost']['mydict']['localaddress1']. Aquí está mi código:

- name: Read IPv4 of first interface
    add_host:
      name: "fakehost"
      telium: "{{ hostvars['fakehost']['mydict'] | combine ({ 'localaddress{{ node }}' : ansible_all_ipv4_addresses[0] }) }}"

No puedo entender cómo construir localaddress{{node}} con ansible quejándome de la sintaxis.

Respuesta1

No anidar bigotes ( {{ }}). Una vez que estás dentro de una expresión, ya estás en un contexto Jinja y no debes usar delimitadores adicionales al acceder a una variable.

      telium: "{{ hostvars['fakehost']['mydict'] | combine ({ 'localaddress' ~ node: ansible_all_ipv4_addresses[0] }) }}

información relacionada