发现管理IP并在模板中使用它

Ign*_*ona 3 ansible ansible-facts

我正在尝试使用Ansible设置我的sshd_config文件.出于设计原因(我们有虚拟机和物理机,有不同的NIC)管理界面没有修复,所以在我的模板中我不能放

{{ ansible_eth0.ipv4.address }}
Run Code Online (Sandbox Code Playgroud)

因为我事先不知道哪个接口是管理接口所以我需要发现它.我知道IP总是在一个范围内(例如192.168.1.0/24).

如何发现哪个接口具有该IP,然后在模板中使用它?

jar*_*arv 9

Ansible提供了一个名为ansible_all_ipv4_addressesall ip address的列表.

要查找管理IP,请参阅此工作示例:

test.yml:

- hosts: all
  gather_facts: yes
  tasks:
    - debug: var=ansible_all_ipv4_addresses
    - set_fact:
        man_ip: "{{ item }}"
      with_items: "{{ ansible_all_ipv4_addresses }}"
      when: "item.startswith('192.168.1')"
    - debug: var=man_ip
Run Code Online (Sandbox Code Playgroud)
  • set_fact注册一个可以在游戏后期使用的变量
  • with_items迭代所有ip地址
  • when:"item.startswith('192.168.1')"将限制分配给以192.168.1开头的ips

在本地运行测试游戏:

ansible-playbook -c local -i localhost, test.yml
Run Code Online (Sandbox Code Playgroud)

该变量{{ man_ip }}将具有管理IP地址的IP地址.

  • 应该是 - > with_items:"{{ansible_all_ipv4_addresses}}" (3认同)