Parece que você tem erros em sua sintaxe. Além disso, qual versão do ansible você está usando? Os nomes das variáveis podem ser diferentes. Na versão 2.2
, isso funciona para mim:
- name: Add IP address of all hosts to all hosts
lineinfile:
dest: /etc/hosts
line: "{{ hostvars[item].ansible_host }} {{ hostvars[item].inventory_hostname }} {{ hostvars[item].inventory_hostname_short }}"
state: present
with_items: "{{ groups.all }}"
UPDATE
Basil pensou em situações em que o IP muda. Nesse caso, é melhor usar a solução sugerida:
- 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 }}"