我正在嘗試更新主機變數中的字典,並且鍵的名稱是使用變數(節點)構造的。例如,如果 '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] }) }}