Ansible 遍历由变量设置的清单组中的主机
Ansible iterate over hosts in inventory group set by variable
我的角色模板中有下一个片段:
upstream portal {
{% set nodes = groups["my_dev_cluster"] %}
{% for node in nodes %}
...do something with nodes...
{% endfor %}
}
而且效果很好。
但是当我尝试像这样参数化库存组名称时:
upstream portal {
{% set nodes = groups["{{cluster_name}}"] %}
{% for node in nodes %}
...do something with nodes...
{% endfor %}
}
我得到一个异常,如:
FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute '{{cluster_name}}'"}
这里,cluster_name - 是在默认部分定义的简单字符串变量。
是否可以对其进行参数化?
提前致谢!
你不需要 {{...}}
因为你已经在 jinja 上下文中(在这种情况下,{% set ... %}
块。只需写:
{% set nodes = groups[cluster_name] %}
我的角色模板中有下一个片段:
upstream portal {
{% set nodes = groups["my_dev_cluster"] %}
{% for node in nodes %}
...do something with nodes...
{% endfor %}
}
而且效果很好。
但是当我尝试像这样参数化库存组名称时:
upstream portal {
{% set nodes = groups["{{cluster_name}}"] %}
{% for node in nodes %}
...do something with nodes...
{% endfor %}
}
我得到一个异常,如:
FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute '{{cluster_name}}'"}
这里,cluster_name - 是在默认部分定义的简单字符串变量。
是否可以对其进行参数化?
提前致谢!
你不需要 {{...}}
因为你已经在 jinja 上下文中(在这种情况下,{% set ... %}
块。只需写:
{% set nodes = groups[cluster_name] %}