Ansible设置模块来搜索和查找IP地址

问题描述:

我的主机有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搜索和查找价值的最佳方法是什么?

请问这是吗?

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

如果有多个匹配模式的值,它将按顺序得到第一个值。

+0

完美运作。谢谢 – PatchSte