这篇来自 Ansible.com 的文章展示了如何迭代模板文件中的组:https : //support.ansible.com/hc/en-us/articles/201957887-How-to-loop-over-a-组内主机列表模板-
它显示了以下代码:
{% for host in groups['db_servers'] %}
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但我想要迭代的服务器是通过多个组定义的。所以想象一下,我想遍历 db_servers 和 qa 组中的所有服务器。我怎样才能做到这一点?
我试图以与我在剧本中相同的方式指定组的交集,但这不起作用。所以,当我尝试:
{% for host in groups['db_servers:&qa'] %}
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
fatal: [54.173.247.115] => {'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'db_servers:&qa'", 'failed': True}
Run Code Online (Sandbox Code Playgroud)
关于如何迭代模板文件中的多个组的任何建议?
我想通过 Ansible 从 AWS EC2 标签中提取值。这有效:
{{ hostvars[host]['ec2_private_ip_address'] }}
Run Code Online (Sandbox Code Playgroud)
并将返回 IP 地址。所以,我正在获取 EC2 数据。但是,我的 EC2 实例上有一个名为 app 的标签,其值类似于 Cassandra 或 PostGres,我需要找出我当前正在处理与该帖子关联的应用程序的每个主机。关于如何获取 EC2 标签值的任何想法?