Я не могу воспроизвести поведение, описанное вами в вашем вопросе. Я использую Ansible 2.9.0. Если я начну с этого инвентаря в hosts.yml
:
---
all:
children:
nodes:
hosts:
node.env1:
И в этой пьесе:
- hosts: localhost
gather_facts: false
tasks:
- name: checking "known_hosts"
loop: "{{ groups['nodes'] }}"
lineinfile:
dest: ./known_hosts
state: present
line: "{{ lookup('pipe', 'echo ' + item) }}"
create: true
я получу следующий вывод:
PLAY [localhost] *************************************************************************************************************************************************************
TASK [checking "known_hosts"] ************************************************************************************************************************************************
changed: [localhost] => (item=node.env1)
PLAY RECAP *******************************************************************************************************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Исгенерированный known_hosts
файл выглядит следующим образом:
node.env1
Если вы используете устаревший формат инвентаря в стиле INI, а не формат инвентаря YAML, то следующий инвентарь будет работать так же, какинвентарь YAML вверху этого ответа:
[nodes]
node.env1