在Ansible Jinja2模板的默认过滤器中使用变量

seb*_*wth 3 ansible

在一个Ansible Jinja2模板中,我试图设置一个“默认”值,该值中也包含一个变量,但是它打印出文字,而不是对其进行插值。

例如:

homedir = {{ hostvars[inventory_hostname]['instances'][app_instance]['homedir'] | default("/home/{{ app_instance }}/airflow") }}
Run Code Online (Sandbox Code Playgroud)

返回:

airflow_home = /home/{{ app_instance }}/airflow
Run Code Online (Sandbox Code Playgroud)

如何引用app_instance变量?

tec*_*raf 6

在Jinja2表达式内部使用Jinja2语法。您应该将字符串连接为变量值:

homedir = {{ hostvars[inventory_hostname]['instances'][app_instance]['homedir'] | default("/home/" + app_instance + "/airflow") }}
Run Code Online (Sandbox Code Playgroud)