首页 > 解决方案 > 在 ansible 模板中使用动态组名

问题描述

我正在组建一个角色来配置多个 Kafka 集群。每个集群都需要包含唯一的代理 ID 以及 Zookeeper 节点列表。这是我用来定义 zookeeper 节点的片段:

zookeeper.connect={% for host in groups['zookeeper'] -%} {{ host }}:2181{% if not loop.last %},{% endif %} {%- endfor %}

我正在尝试找到一种方法来替换 groups['zookeeper'] 类似于以下内容:

zookeeper.connect={% for host in groups[{{ zookeeper_cluster_name }}] -%} {{ host }}:2181{% if not loop.last %},{% endif %} {%- endfor %}

zookeeper_cluster_name 在我的清单中定义,调试 var=zookeeper_cluster_name 表明它正在进入我的角色。解析器不断吐出错误,我似乎无法找到正确的语法来通过变量指定组。有谁碰巧知道这是否可能?如果有人有一个例子(或更好的方法来解决这个问题),我肯定会感谢你的睿智智慧。

标签: ansible

解决方案


您正在 jinja2 表达式中使用变量。在这种情况下,您只需使用变量名。

zookeeper.connect={% for host in groups[zookeeper_cluster_name] -%} {{ host }}:2181{% if not loop.last %},{% endif %} {%- endfor %}

推荐阅读