Ansible条件语句不应包含Jinja2模板分隔符。如果您在条件语句中包含了Jinja2模板分隔符(例如{{ }}或{% %}),Ansible会将其解析为Jinja2模板语法,而不是条件语句。
要解决这个问题,您可以将条件语句的内容放在双引号或单引号中,以阻止Ansible解析其中的Jinja2模板语法。
以下是一个示例:
- name: 示例
hosts: localhost
vars:
my_var: "value"
tasks:
- name: 使用条件语句
debug:
msg: "条件满足"
when: my_var == "value" # 条件语句没有Jinja2模板分隔符
- name: 使用Jinja2模板语法
debug:
msg: "Jinja2模板语法"
when: my_var == "{{ my_var }}" # 包含了Jinja2模板分隔符,会被解析为模板语法
在上面的示例中,第一个任务使用了正确的条件语句,当my_var
的值为value
时,输出条件满足
。而第二个任务包含了Jinja2模板分隔符,会被解析为模板语法,当my_var
的值为value
时,输出Jinja2模板语法
。
通过将条件语句的内容放在引号中,可以确保Ansible正确解析条件语句,而不会将其解析为Jinja2模板语法。