Jinja2 模板 if/else 语句

Jinja2 template if/else statement

在 jinja2 模板文件中,我试图在服务器主机名中找到一个字符串,然后根据找到的内容应用我想要的设置。这是我所拥有的。这有效,但是,一切都在获取 developmenthosts 设置。

{% if 'dev' or 'tst' or 'test' or 'eng' in ansible_hostname %} {{ developmenthosts }} {% else %} {{ productionhosts }} {% endif %}

任何帮助都会很棒,而且我对使用 jinja2 模板还很陌生。

尝试以下方法,使用 regex_search 可以将 if/else 写成更短更清晰的格式。

"{{ developmenthosts if ( ansible_hostname|regex_search('dev|tst|test|eng') ) else  productionhosts }}"

示例:

---

- name: Sample playbook
  connection: local
  #  gather_facts: false
  hosts: localhost
  vars:
   developmenthosts: MYDEVHOST
   productionhosts: MYPRODHOST
  tasks:
  - debug:
      msg: "{{ ansible_hostname }}"
  - debug:
      msg: "{{ developmenthosts if ( ansible_hostname |regex_search('dev|tst|test|eng') ) else  productionhosts }}"