Ansible:맵(추출 포함) 필터의 출력 형식을 조정하는 방법

Ansible:맵(추출 포함) 필터의 출력 형식을 조정하는 방법

두 그룹에 속한 호스트의 IP 주소를 추출하여 .xml 구성 파일에서 사용하려고 합니다.

여기서 직면한 문제는 jinja 템플릿에 사용된 표현식에 의해 생성된 출력입니다. 내가 달성하고 싶은 것은 다음과 같은 출력이지만 10.3.5.1,10.3.5.2,10.3.5.2대신에 [u'10.3.5.1],[u'10.3.5.2],[u'10.3.5.2].

이것은 jinja 템플릿에 사용되는 표현식입니다.

<member1>{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | unique | join(',') }}</member1>

다른 필터도 시도해 보았지만 예상한 결과를 얻을 수 없었습니다.

이를 위해 어떤 필터를 사용해야 합니까? (적절한 것을 찾을 수 없었습니다)

답변1

ansible_ip_addresses은 목록이므로 중첩된 목록(IP 주소 포함)이 있는 목록(호스트 목록)이 있습니다.

적용하기 전에 평평하게 만들고 싶을 수도 있습니다 unique.join

{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | sum(start=[]) | unique | join(',') }}

이렇게 하면 고유한 항목을 가져와서 쉼표로 결합하는 것보다 단일 IP 주소를 요소로 포함하는 단순 목록이 만들어집니다.

관련 정보