繁体   English   中英

Ansible Jinja2 模板是否支持在 for 循环中列出 arguments?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM