Ansible playbook hostvars未定义变量

Ansible playbook hostvars未定义变量

各位,以下代码产生了错误。

代码:

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

谢谢!

答案1

查看错误消息

‘tuple object’没有属性‘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

希望它能解决你的问题。干杯!

相关内容