我正在使用这种类型的Ansible库存编写自动化:
[nodes]
<publicIp1> privateIp=<privateIp1>
<publicIp2> privateIp=<privateIp2>
我之所以这样做,是因为有时主机拥有与私有IP不同的公共IP(例如,AWS)。
现在在配置任何主机时,我需要获得一个类似于&#34; privateIp1,privateIp2&#34;的csv。在模板模块的jinja2文件中。
首先,我甚至不想参考群组名称&#34; node&#34;,而只是要求&#34;给我列出所有&#39; privateIp&#39;当前主机组的所有成员的库存变量。&#34; &LT;&LT;假设我的主持人只是一个小组的成员。
如果不可能,有没有办法引用群组名称并执行此操作?
答案 0 :(得分:2)
使用group
magic variable。您的用例在文档中有一个确切的示例,只需替换变量名称:
groups是清单中所有组(和主机)的列表。这可用于枚举组内的所有主机。 []
一个经常使用的习惯用法是走一个小组来查找该组中的所有IP地址
{% for host in groups['app_servers'] %} {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }} {% endfor %}
您可以将模板与另一个魔术变量group_names
合并,以获取当前主机的组列表,并将其用作外部循环。