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 - 是defaults部分中定义的简单字符串变量。
是否有可能对它进行参数化?
提前致谢!
I have the next snippet in my role template:
upstream portal { {% set nodes = groups["my_dev_cluster"] %} {% for node in nodes %} ...do something with nodes... {% endfor %} }And it works well.
But when I try to parametrize inventory group name like this:
upstream portal { {% set nodes = groups["{{cluster_name}}"] %} {% for node in nodes %} ...do something with nodes... {% endfor %} }I get an exception like:
FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute '{{cluster_name}}'"}Here, cluster_name - is a simple string variable defined in defaults section.
Is it possible to parametrize it at all?
Thanks in advance!
最满意答案
你不需要{{...}}因为你已经在jinja上下文中(在这种情况下,是{% set ... %}块。只需写:
{% set nodes = groups[cluster_name] %}You don't need {{...}} because you're already inside a jinja context (in this case, the {% set ... %} block. Just write:
{% set nodes = groups[cluster_name] %}更多推荐
发布评论