如何在Ansible中获取主机专用网络地址

Suv*_*ica 2 ansible

我尝试过这样的事情:

gather_facts: yes
  tasks:
    - debug: var=ansible_all_ipv4_addresses
    - set_fact:
        man_ip: "{{ item }}"
      with_items: ansible_all_ipv4_addresses
      when: "item.startswith('10.')"
    - debug: var=man_ip
Run Code Online (Sandbox Code Playgroud)

它有效,但我使用docker的服务器有问题,因为docker容器也有开始接口的地址10.x.x.x.

那么,我怎样才能获得主机专用网址?

Tom*_*Tom 7

你可以使用ansible_all_ip_addresses事实和ipaddr过滤器.

{{ ansible_all_ipv4_addresses | ipaddr('private') | first }}
Run Code Online (Sandbox Code Playgroud)

注意:您可以查看可用的安全事实ansible -m setup localhost

编辑:你也可以通过ip过滤ipaddr

{{ ansible_all_ipv4_addresses | ipaddr('10.0.0.0/8') | first }}
Run Code Online (Sandbox Code Playgroud)


hel*_*loV 3

怎么样:

- debug: var="ansible_eth0['ipv4']['address']"
Run Code Online (Sandbox Code Playgroud)

或者

- debug: var=ansible_eth0.ipv4.address
Run Code Online (Sandbox Code Playgroud)