ansible - 如何在ansible的for循环中使用主机变量时访问变量值?
问题描述
如何在处理组变量时访问变量值。
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}}'
谁能在这里建议如何使用索引值。
解决方案
为确保每个主机组单独循环,您可以使用以下代码(或类似的代码)。该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 %}
推荐阅读
- java - 不接收来自数据库的更新数据(Spring OneToMany 关系)
- python-3.x - 如何将输出转换为带有索引的新表?蟒蛇3
- c - 反转结构位域的顺序
- node.js - TypeError:解析不是函数
- python - 如何使用 Python 请求添加到购物车
- anaconda - conda 报告频道更改 pkgs/main --> anaconda/pkgs/main 并且解决速度很慢
- apache - 400 Bad Request 您正在向启用 SSL 的服务器端口 kubernetes pod 使用纯 HTTP
- json - 由于使用 NextJS 的序列化问题,无法从服务器获取数据?
- android - Android Jetpack Compose - 图像无法缩放到框的宽度和高度
- kubernetes - 集群范围内 API 组中的禁止资源