在 Ansible 中使用变量构造字典键

在 Ansible 中使用变量构造字典键

我正在尝试更新 hostvar 中的 dict,并且键的名称是使用变量 (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] }) }}"

我无法弄清楚如何使用 ansible 构造 localaddress{{node}} 并抱怨语法。

答案1

不要嵌套胡须({{ }})。一旦进入表达式,您就已经处于 Jinja 上下文中,并且在访问变量时不应使用额外的分隔符。

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

相关内容