ansible - 在 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 表明它正在进入我的角色。解析器不断吐出错误,我似乎无法找到正确的语法来通过变量指定组。有谁碰巧知道这是否可能?如果有人有一个例子(或更好的方法来解决这个问题),我肯定会感谢你的睿智智慧。
解决方案
您正在 jinja2 表达式中使用变量。在这种情况下,您只需使用变量名。
zookeeper.connect={% for host in groups[zookeeper_cluster_name] -%} {{ host }}:2181{% if not loop.last %},{% endif %} {%- endfor %}
推荐阅读
- firebase - Firebase,我如何登录谷歌服务帐户?
- excel - 将 VBA 从母版复制并粘贴到模板
- c++ - C++ 使用递归打印反转整数
- c# - 如何在 WPF 中批量更新绘图?
- ruby - 如何使用 google sheet api 中的 batch_update_spreadsheet 方法将数据添加到单元格?
- sql - SQL Server 中的等价物是什么?
- javascript - 添加和删除一个类以激活反应中的关键帧
- java - Visual Studio Code 通过其 Java 扩展创建哪些项目文件?
- javascript - 适用于 Chrome 但不适用于 Firefox 的 JS/CSS 代码
- powershell - 给定一个 IP 地址,我如何找到它也属于哪个 GCP Compute Engine 实例?