Можно использовать ' hostvars '.См. Ниже
hostname: {{ hostvars[host].ansible_hostname }}
Interfaces: {{ hostvars[host].ansible_interfaces }}
"Чтобы сделать это, Ansible, должно быть, уже поговорил с ' ios_devices ' в текущей игре или с другой игрой выше в книге игр. Этостандартная конфигурация ansible. "См. Факты кэширования .
Например, запуск игры, как показано ниже, будет кэшировать факты о хостах в группе ' ios_devices '
- hosts: ios_devices
gather_facts: yes
Но это запустит playbook и задачу « template » на каждом хосте в группе.Чтобы избежать этого, задача ' template ' может быть run_once .См. Ниже
- template:
src: ./template/temp.j2
dest: report.txt
run_once: true
Но из-за условия в шаблоне (см. Ниже) это исключит из ' report.txt ' хост, на котором запущена книга воспроизведения.
{% if not host==inventory_hostname %}
Кэшируйте факты о ' ios_devices ' и запускайте playbook на хосте, который не является членом ' ios_devices ', если все члены ' ios_devices 'должен быть включен в' report.txt '.См. Ниже
- hosts: ios_devices
gather_facts: yes
- hosts: localhost
gather_facts: no
tasks:
- template:
src: ./template/temp.j2
dest: report.txt
Или удалите условие ' host == инвентарь_хост * ' из шаблона.Файл ' report.txt ' будет создан на хосте, на котором, конечно, выполняется задача ' template '.