如何在Ansible的Jinja2模板中为数组元素添加前缀后缀并拼接?
Ansible Jinja2 列表格式化解决方案
要实现给主机名列表统一添加协议前缀和端口后缀,再拼接成指定字符串的需求,你代码里的****位置应该用**map('format', 'https://%s:1234')**,完整代码如下:
{{ ['host1', 'host2', 'host3'] | map('string') | map('format', 'https://%s:1234') | join(',') }}
各部分作用说明:
map('string'):确保列表里的每个元素都被转为字符串类型(避免非字符串元素导致格式化失败)map('format', 'https://%s:1234'):对每个元素应用format过滤器,把元素代入%s的位置,生成带前缀和后缀的完整地址join(','):将所有处理后的地址用逗号拼接成一个完整字符串
如果你不想用format,也可以用正则替换的方式实现,代码如下:
{{ ['host1', 'host2', 'host3'] | map('string') | map('regex_replace', '^(.*)$', 'https://\\1:1234') | join(',') }}
不过用format的写法更直观易懂,推荐优先使用。
内容的提问来源于stack exchange,提问作者inspiral
相关产品推荐
相关产品推荐

