【发布时间】:2020-12-18 22:14:40
【问题描述】:
在 Ansible 角色中,如果定义了变量,我将在 Jinja2 模板中进行测试。如果已定义,则应设置 Ansible 的 defaults/main.yml 中的变量来引用此变量。
只要定义了在 Jinja2 模板中测试的变量,就可以正常工作。如果不是,Ansible 会抱怨一个未定义的变量。
角色文件示例:
$ cat defaults/main.yml
---
database_name: "prefix-{{ database }}"
$ cat tasks/main.yml
---
- name: Deploy config
template:
src: config.j2
dest: /opt/config
mode: 0644
$ cat templates/config.j2
# this works
{% if database is defined %}
Database={{ database }}
{% endif %}
# this is broken
{% if database is defined %}
Database={{ database_name }}
{% endif %}
在测试它是否存在后直接使用该变量(参见上面的“这工作”)就可以了。
如何使用 defaults/main.yml 中的变量?
【问题讨论】:
标签: ansible jinja2 ansible-2.x