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 }}"
在 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 }}"