Tenho uma VM com 2 interfaces de rede, eth0 e ens10.
Então atualmente eu uso isso:
- 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 }}"
Mas isso apenas adiciona o IP dos hosts conforme especificado no arquivo Ansible (esta é a interface eth0).
Quero adicionar o IP da interface ens10 ao arquivo hosts.
Você pode obter o endereço da interface
ens10
usando a variávelansible_ens10.ipv4.address
(supondo que a coleta de fatos esteja ativada). No entanto, para o que você está fazendo, pode fazer mais sentido usaransible_all_ipv4_addresses
, o que permitiria fazer algo assim:Isso pode gerar entradas
/etc/hosts
parecidas com:(Supondo que hostA tenha dois endereços,
192.168.1.1
e100.64.0.1
, e hostB tenha um endereço,.192.168.1.2
)Se não quiser
ansible_all_ipv4_addresses
, você pode limitar o loop a nomes de interface específicos: