通过jinja代码替换多个

时间:2017-10-19 11:00:46

标签: ansible jinja2

而不是使用键“when:”:

进行多次启动
- name
...
when: {{ environnement }} in 'pp'

- name
...
when: {{ environnement }} in 'pd'

我想直接在yaml中这样做:

{% if {{ environnement }} in ('pp','pd') and if {{ module }} == 'publish' %}
- name: ...
{% endif %}

没有模板甚至可能吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可能想要使用blocks。来自docs的示例:

 tasks:
     - name: Install Apache
       block:
         - yum: name={{ item }} state=installed
           with_items:
             - httpd
             - memcached
         - template: src=templates/src.j2 dest=/etc/foo.conf
         - service: name=bar state=started enabled=True
       when: ansible_distribution == 'CentOS'

针对您的情况:

- block:
    - name: ...
      ...

    - name: ...
      ...
  when: environnement in ['pp','pd']

P.S。并且在{{...}}语句中不使用when,它们本身已经是Jinja2表达式。