2017-10-09 80 views
0

我的主機有3個網絡IP地址,其中一個在我的操作手冊中稍後需要。Ansible設置模塊來搜索和查找IP地址

在我的劇本我已經跑了以下安裝模塊:

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

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

將提供以下的輸出:

{ 
    "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使用前三個八位字節或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