Использование переменной для создания ключа словаря в Ansible

Использование переменной для создания ключа словаря в Ansible

Я пытаюсь обновить словарь в hostvar, а имя ключа создается с помощью переменной (node). Например, если 'node' равен 1, то я хочу обновить hostvars['fakehost']['mydict']['localaddress1']. Вот мой код:

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

Я не могу понять, как создать localaddress{{node}} с помощью ansible, жалующегося на синтаксис.

решение1

Не вкладывайте усы ( {{ }}). Как только вы находитесь внутри выражения, вы уже находитесь в контексте Jinja и не должны использовать дополнительные разделители при доступе к переменной.

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

Связанный контент