[英]Does Ansible Jinja2 Templating support list arguments in for loop?
我正在尝试从列表中动态创建模板,我想知道 Ansible 是否支持类似
{% for server in [sg-bend1, sg-bend2] %}
check program {{ server }}_test
with path /home/ubuntu/t.sh {{ server }}
if status != 0 then alert
{% endfor %}
理论上这应该产生
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
根据提供的描述,我了解到您的问题仅与Jinja2 模板和语法有关。
您可以尝试的一种方法如下
{% for i in range(1,3) %}
check program sg-bend{{ i }}_test
with path /home/ubuntu/t.sh sg-bend{{ i }}
if status != 0 then alert
{% endfor %}
类似问答
文档
据我了解文档,解决方案应该是在变量中提供列表
{% for SERVER in SERVERS %}`
或其他语法
{% for SERVER in ('test1', 'test2') %}
例子
---
- hosts: localhost
become: false
gather_facts: false
vars:
SERVERS: ['test1', 'test2']
tasks:
- name: Show result
debug:
msg: "{% for SERVER in SERVERS %}{{ SERVER }}{% endfor %}"
- name: Show result
debug:
msg: "{% for SERVER in ('test1', 'test2') %}{{ SERVER }}{% endfor %}"
将导致 output 的
TASK [Show result] ******
ok: [localhost] =>
msg: test1test2
TASK [Show result] ******
ok: [localhost] =>
msg: test1test2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.