Ansible Jinja模板单变量传递多IP同端口配置咨询
Ansible Jinja模板生成IP端口列表配置方法
方式一:拆分IP与端口变量动态拼接
适合端口统一、IP可能单独调整的场景,维护变量时不用重复写端口:
- 在Ansible变量文件中定义基础变量
service_port: 8200 node_ips: - 10.0.0.1 - 10.0.0.2 - 10.0.0.3 - 10.0.0.4 - Jinja模板中写入以下渲染逻辑
渲染后输出完全匹配要求的格式:value=[{% for ip in node_ips %}"{{ ip }}:{{ service_port }}"{% if not loop.last %}, {% endif %}{% endfor %}]value=["10.0.0.1:8200", "10.0.0.2:8200", "10.0.0.3:8200", "10.0.0.4:8200"]
方式二:直接传入完整IP端口组合列表
完全支持直接将完整组合列表作为单个变量传入,这种方式写法更简洁,也不容易出现循环拼接的格式错误:
- 变量定义时直接写完整的地址列表
service_addr_list: - "10.0.0.1:8200" - "10.0.0.2:8200" - "10.0.0.3:8200" - "10.0.0.4:8200" - Jinja模板中直接用内置过滤器渲染即可
value={{ service_addr_list | to_json }}
注意:如果传入的是字符串格式的列表(比如直接把
["10.0.0.1:8200", "10.0.0.2:8200"]作为字符串值赋给变量),渲染前需要先加| from_json过滤器转成Ansible原生列表对象,否则会出现引号转义、格式错乱的问题。
内容的提问来源于stack exchange,提问作者matku
相关产品推荐
相关产品推荐

