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