Hostvar에서 dict를 업데이트하려고 하는데 키 이름이 변수(노드)를 사용하여 구성됩니다. 예를 들어, '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] }) }}