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

时间:2016-01-11 20:14:01

标签: 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

它可以工作,但是我使用docker的服务器有问题,因为docker容器也有10.x.x.x开头的接口地址。

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

3 个答案:

答案 0 :(得分:6)

您可以使用ansible_all_ip_addresses事实和ipaddr过滤器。

{{ ansible_all_ipv4_addresses | ipaddr('private') | first }}

注意:您可以查看ansible -m setup localhost

提供的 ansible facts

修改:您也可以使用ipaddr

按IP进行过滤
{{ ansible_all_ipv4_addresses | ipaddr('10.0.0.0/8') | first }}

答案 1 :(得分:3)

怎么样:

- debug: var="ansible_eth0['ipv4']['address']"

- debug: var=ansible_eth0.ipv4.address

答案 2 :(得分:0)

- debug: var=hostvars[inventory_hostname].private_ipv4