【问题标题】:Ansible Setup Module to search and find an IP addressAnsible 设置模块用于搜索和查找 IP 地址
【发布时间】:2017-10-09 08:49:53
【问题描述】:

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

【问题讨论】:

    标签: ansible jinja2 ansible-facts


    【解决方案1】:

    这样可以吗?

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-25
      • 2013-04-26
      • 2018-01-05
      • 1970-01-01
      • 2015-09-25
      • 2021-01-18
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多