Назад | Перейти на главную страницу

Ansible playbook hostvars undefined переменные

Ребята, следующий код вызывает ошибки.

код:

{% 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

Надеюсь, это решит вашу проблему. Ура !!