首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在jinja2中追加ansible的列表

如何在jinja2中追加ansible的列表
EN

Stack Overflow用户
提问于 2018-04-03 06:05:40
回答 2查看 63.7K关注 0票数 21

下面是我在ansible中使用的jinja2模板。

{% set port = 1234 %}
{% set server_ip = [] %}
{% for ip in host_ip  %}
{% do server_ip.append({{ ip }}:{{ port }}) %}
{% endfor %}
{% server_ip|join(', ') %}

下面是我想要的输出:

devices = 192.168.56.14:1234,192.168.56.13:1234,192.168.56.10:1234

但是当我运行ansible playbook时,它抛出了如下错误:

"AnsibleError: teme templating string: Encountered unknown tag 'do'. Jinja was looking for th: 'endfor' or 'else'

如有任何帮助,将不胜感激..

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 07:44:47

这对我很有效:

- set_fact:
    devices: >-
      {% for ip in host_ip %}{{ ip }}:1234{% if not loop.last %},{% endif %}{% endfor %}

如果您仍然想使用do,那么可以添加

jinja2_extensions = jinja2.ext.do

添加到ansible配置文件中,并更改

{% do server_ip.append({{ ip }}:{{ port }}) %}` to `{% do server_ip.append({ip:port}) %}`
票数 8
EN

Stack Overflow用户

发布于 2021-09-07 14:59:49

使用map()regex的单线解决方案

{{ ["1.1.1.1","2.2.2.2"]|map('regex_replace', '(.+)', "\\1:1234")|join(', ') }}

map('regex_replace', '(.+)', "\\1:1234"):1234添加到传递的数组(.+)中的任何非空字符串["1.1.1.1","2.2.2.2"]。结果:

1.1.1.1:1234, 2.2.2.2:1234
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49619445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档