如何在处理组变量时访问变量值。
Ansible 2.5
{% for ----%}
{% set floop = loop %}
{% for host in groups['web{{floop.index}}']%}
--- block of code ---
{% endfor %}
{% endfor %}
库存文件:
[web1]
host1
host2
[web2]
host3
host4
这给了我下面的错误。
AnsibleUndefinedVariable: 'dict object' has no attribute 'web{{loop.index}}'
任何人都可以在这里建议如何使用索引值。
答案 0 :(得分:0)
为确保每个主机组分别循环,您可以使用以下代码(或类似的代码)。这里有if
语句,以确保您仅循环访问名为web<number>
的组:
{% for group in groups %}
{% if group | regex_search('^web\d+') %}
{% for host in groups[group] %}
--- block of code ---
{% endfor %}
{% endif %}
{% endfor %}
这是我最初的答案。留在这里,以防其他人得到帮助。
改为使用父主机组。无论如何,根据您的特定用例,这可能是一种更好,更安全的方法。
库存:
[web1]
host1
host2
[web2]
host3
host4
[web:children]
web1
web2
循环:
{% for host in groups['web'] %}
--- block of code ---
{% endfor %}