Ansible设置模块,用于搜索和查找IP地址

时间:2017-10-09 08:49:53

标签: ansible jinja2 ansible-facts

我的主机有3个网络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来找到找到192.168.0.63的方法。然后我也想把这个值变成一个事实,所以我可以在我的剧本中稍后使用它。

使用Ansible或Jinja2搜索和查找该值的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这会吗?

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

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