Ansible迭代由变量设置的库存组中的主机

时间:2017-12-07 15:16:41

标签: ansible ansible-inventory ansible-facts ansible-template

我的角色模板中有下一个代码段:

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 - 是默认部分中定义的简单字符串变量。

是否可以对其进行参数化?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您不需要{{...}},因为您已经在jinja上下文中(在这种情况下,{% set ... %}块。只需写:

{% set nodes = groups[cluster_name] %}