no-jinja-when¶
此规则检查条件语句中是否存在花括号 {{ }}
中的 Jinja 表达式。Ansible 将使用 when
、failed_when
和 changed_when
子句的条件语句视为 Jinja 表达式进行处理。
Ansible 的规则是始终使用 {{ }}
,但 when
键除外。在条件语句中使用 {{ }}
会创建一个嵌套表达式,这是一个 Ansible 反模式,不会产生预期的结果。
有问题的代码¶
---
- name: Example playbook
hosts: localhost
tasks:
- name: Shut down Debian systems
ansible.builtin.command: /sbin/shutdown -t now
when: "{{ ansible_facts['os_family'] == 'Debian' }}" # <- Nests a Jinja expression in a conditional statement.
正确的代码¶
---
- name: Example playbook
hosts: localhost
tasks:
- name: Shut down Debian systems
ansible.builtin.command: /sbin/shutdown -t now
when: ansible_facts['os_family'] == "Debian" # <- Uses facts in a conditional statement.
注意
可以使用 --fix
选项自动修复此规则。