gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:05:28 24 4
gpt4 key购买 nike

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

[nodes]
<publicIp1> privateIp=<privateIp1>
<publicIp2> privateIp=<privateIp2>

我这样做是因为有时主机具有不同的公共(public) IP 和私有(private) IP(例如 AWS)。

现在在配置任何主机时,我需要在模板模块的 jinja2 文件中获取一个类似“privateIp1,privateIp2”的 csv。

最好,我什至不想引用组名“节点”,而只是要求“给我当前主机组的所有成员的所有 'privateIp' 库存变量的列表”。 << 假设我的主人只是一个小组的成员。

如果不可能,有没有办法引用组名并执行此操作?

最佳答案

使用 group magic variable .文档中有一个针对您的用例的确切示例,只需替换变量名:

groups is a list of all the groups (and hosts) in the inventory. This can be used to enumerate all hosts within a group. [ ]

A frequently used idiom is walking a group to find all IP addresses in that group

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

您可以将模板与另一个魔术变量 group_names获取当前主机的组列表并将其用作外循环。

关于ansible - (Ansible) 如何在模板/Jinja2 中获取一组主机的所有库存变量作为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45002583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com