2017-10-09 9 views
0

내 호스트에는 네트워크 IP 주소가 3 개 있으며 그 중 하나는 나중에 내 플레이 북에 필요합니다.IP 주소를 검색하고 찾을 수있는 설정 모듈

{ 
    "setup.ansible_facts.ansible_ip_addresses": [ 
     "10.0.2.15", 
     "fe80::85ae:2178:df12:8da0", 
     "192.168.99.63", 
     "fe80::3871:2201:c0ab:6e39", 
     "192.168.0.63", 
     "fe80::79c5:aa03:47ff:bf65", 
     "fd89:8d5f:2227:0:79c5:aa03:47ff:bf65", 
     "2a02:c7f:9420:7100:79c5:aa03:47ff:bf65" 
    ] 
} 

내가 검색하여 192.168.0.63을 찾을 수있는 방법을 찾기 위해 노력하고 있어요 :

- name: Gather Networks Facts into Variable 
    setup: 
    register: setup 

- name: Debug Set Facts 
    debug: 
    var: setup.ansible_facts.ansible_ip_addresses 

(가) 다음과 같은 출력을 제공합니다 : 내 플레이 북

난 다음 설치 모듈을 실행 한 처음 세 옥텟 또는 192.168.0을 사용합니다. 나는 또한 사실에 대한 가치를 얻고 싶다. 그래서 나는 나중에이 작품을 나의 플레이 북에서 사용할 수있다.

Ansible 또는 Jinja2를 사용하여 해당 값을 검색하고 찾는 가장 좋은 방법은 무엇입니까?

답변

1

이렇게 할 수 있습니까?

- set_fact: 
    my_fact: "{{ (setup.ansible_facts.ansible_ip_addresses | select('match','192.168.0.') | list)[0] }}" 

패턴과 일치하는 값이 여러 개인 경우 첫 번째 값을 순서대로 가져옵니다.

+0

완벽하게 작동했습니다. 고맙습니다 – PatchSte