我有一个模板文件config.j2
:
{% for host in groups['dbs'] %}
ips= {{ hostvars[host].ansible_default_ipv4.address }}
{% endfor %}
我的输出是:
ips= 192.168.231.91
ips= 192.168.231.92
ips= 192.168.231.93
我希望像这样保存在数组变量中:
ips=['192.168.231.91','192.168.231.92','192.168.231.93']
怎么做呢?
答案 0 :(得分:0)
<强>解决方案强>
ips=[{{ groups['dbs'] | map("regex_replace", "(.*)", "'\\1'") | join(",") }}]
<强>解释强>
字符串ips[
和]
直接打印在模板中;
Jinja2表达式处理groups['dbs']
列表:
map
filter将过滤器(regex_replace
)应用于列表的各个元素;
regex_replace
filter用单引号括起每个列表元素(字符串);
join
filter将结果列表转换为输出中逗号分隔的字符串。