我有一个带有 2 个网络接口的虚拟机,eth0 和 ens10。
所以目前我使用这个:
- name: Add IP address of all hosts to all hosts
lineinfile:
dest: /etc/hosts
regexp: '.*{{ item }}$'
line: "{{ hostvars[item].ansible_host }} {{item}}"
state: present
when: hostvars[item].ansible_host is defined
with_items: "{{ groups.all }}"
但这只会添加 Ansible 文件中指定的主机 IP(这是 eth0 interafce)。
我想将ens10接口IP添加到hosts文件中。
ens10
您可以使用变量获取接口的地址ansible_ens10.ipv4.address
(假设您启用了事实收集)。但是,对于您正在做的事情,使用它可能更有意义ansible_all_ipv4_addresses
,这将允许您执行如下操作:这可以让你的条目
/etc/hosts
看起来像这样:(假设hostA有两个地址,
192.168.1.1
和100.64.0.1
,hostB有一个地址,192.168.1.2
。)如果您不想
ansible_all_ipv4_addresses
,可以将循环限制为特定的接口名称: