Ребята, следующий код вызывает ошибки.
код:
{% for v in hostvars.iteritems() %}
{{ v['ansible_all_ipv4_addresses'][0] }} {{ v['ansible_hostname'] }}
{% endfor %}
ошибка:
{'msg': "One or more undefined variables: 'tuple object' has no attribute 'ansible_all_ipv4_addresses'", 'failed': True}
Как это должно выглядеть, если мне нужен файл / etc / hosts, например:
192.168.111.222 hostnameA
192.168.111.211 hostnameB
...
Спасибо!
Просмотр сообщения об ошибке
'объект кортежа' не имеет атрибута 'ansible_all_ipv4_addresses'
, ясно, что факты ваших хостов либо не содержат ansible_all_ipv4_addresses внутри, где вы искали, либо синтаксический анализатор застал вас врасплох :)
Попробуем это:
{% for minion in groups['web'] %}
{{ hostvars[minion]['ansible_all_ipv4_addresses'][0] }} {{ hostvars[minion]['ansible_hostname'] }}
{% endfor %}
Представьте, что мы размещаем наш инвентарь вот так
[web]
192.168.111.222 hostnameA
192.168.111.211 hostnameB
Надеюсь, это решит вашу проблему. Ура !!