Ansible 迭代由变量设置的清单组中的主机 [英] Ansible iterate over hosts in inventory group set by variable

查看:39
本文介绍了Ansible 迭代由变量设置的清单组中的主机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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 %}
}

而且效果很好.

但是当我尝试像这样参数化库存组名称时:

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 %}
}

我得到一个例外:

 FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute '{{cluster_name}}'"}

这里,cluster_name - 是一个在 defaults 部分定义的简单字符串变量.

Here, cluster_name - is a simple string variable defined in defaults section.

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

Is it possible to parametrize it at all?

提前致谢!

推荐答案

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

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] %}

这篇关于Ansible 迭代由变量设置的清单组中的主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆