(Ansible)如何在template/Jinja2中将一组主机的所有库存变量作为列表获取?

(Ansible)如何在template/Jinja2中将一组主机的所有库存变量作为列表获取?,ansible,jinja2,ansible-inventory,ansible-template,Ansible,Jinja2,Ansible Inventory,Ansible Template,我正在使用这种类型的Ansible清单编写自动化: [nodes] <publicIp1> privateIp=<privateIp1> <publicIp2> privateIp=<privateIp2> 我这样做是因为有时主机的公共IP与私有IP不同,例如AWS 现在,在配置任何主机时,我需要在模板模块的jinja2文件中获得类似privateIp1、privateIp2的csv 更可取的是,我甚至不想引用组名节点,而只是要求为当前主机组

我正在使用这种类型的Ansible清单编写自动化:

[nodes]
<publicIp1>  privateIp=<privateIp1>
<publicIp2>  privateIp=<privateIp2>
我这样做是因为有时主机的公共IP与私有IP不同,例如AWS

现在,在配置任何主机时,我需要在模板模块的jinja2文件中获得类似privateIp1、privateIp2的csv

更可取的是,我甚至不想引用组名节点,而只是要求为当前主机组的所有成员提供所有“privateIp”清单变量的列表 使用。文档中有一个与您的用例完全相同的示例,只需替换变量名:

组是资源清册中所有组和主机的列表。这可用于枚举组中的所有主机。[]

一个常用的习惯用法是遍历组以查找该组中的所有IP地址

{% for host in groups['app_servers'] %}
  {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}

您可以将该模板与另一个神奇变量group_name组合,以获取当前主机的组列表,并将其用作外部循环。

但是如何获取主机清单变量的csv列表?我认为上面会将每个项目打印在一行上。你需要写一个合适的模板。当您遇到特定问题时,可以询问StackOverflow。对不起,我不会为你写代码。