Ansible Jinja2模板是否支持在for循环中使用列表参数?
Ansible是否支持该模板动态生成写法?
Ansible完全支持这种通过Jinja2循环动态生成模板内容的写法——Ansible的模板功能基于Jinja2模板引擎,而Jinja2原生支持for循环、变量插值这类语法。
不过需要注意一个细节:你示例中的列表项sg-bend1、sg-bend2需要用引号包裹,否则Jinja2会将它们当作变量名解析(未定义对应变量时会报错)。修正后的模板代码如下:
{% for server in ['sg-bend1', 'sg-bend2'] %} check program {{ server }}_test with path /home/ubuntu/t.sh {{ server }} if status != 0 then alert {% endfor %}
这段模板通过Ansible执行后,会按照预期生成以下内容:
check program sg-bend1_test with path /home/ubuntu/t.sh sg-bend1 if status != 0 then alert check program sg-bend2_test with path /home/ubuntu/t.sh sg-bend2 if status != 0 then alert
你可以通过Ansible的template模块调用该模板文件,将生成后的内容部署到目标主机上。
内容的提问来源于stack exchange,提问作者E_K
相关产品推荐
相关产品推荐

