Use variável para construir a chave do dicionário em Ansible

Use variável para construir a chave do dicionário em Ansible

Estou tentando atualizar um dict em um hostvar, e o nome da chave é construído usando uma variável (nó). Por exemplo, se 'node' for 1, quero atualizar hostvars['fakehost']['mydict']['localaddress1']. Aqui está meu código:

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

Não consigo descobrir como construir localaddress{{node}} com ansible reclamando da sintaxe.

Responder1

Não aninhe bigodes ( {{ }}). Uma vez dentro de uma expressão, você já estará em um contexto Jinja e não deverá usar delimitadores adicionais ao acessar uma variável.

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

informação relacionada