如何修复Ansible Lint的no-jinja-when警告?
解决Ansible Lint的
no-jinja-when警告问题 你的when条件违规使用了Jinja2模板语法({{ }}),触发了no-jinja-when规则。when本身属于表达式上下文,不需要套{{ }},且动态变量引用得用Ansible内置的变量查找方式,不能直接拼接模板。
修改后的任务代码如下:
- name: remove unnecessary batch file: path: "{{ item.path }}" state: absent when: - var_service == "service2" - (item.path | regex_replace(cron_regex_for_s2_deletion, '\\1')) not in vars['batches_' + (var_fuction | regex_replace('^service2-batch-', ''))] with_items: "{{ result.files }}"
修改要点:
- 删掉
when条件里所有的{{ }},直接写变量和过滤器表达式 - 用
vars['变量名']的方式动态引用batches_开头的变量:通过字符串拼接生成变量名,再用vars字典获取对应的值,替代原来的模板拼接写法 - 把多条件拆分成列表形式,可读性更强(也可以保持单行,但分行更清晰)
这样修改后,既符合Ansible Lint的规范,功能和原代码完全一致。
内容的提问来源于stack exchange,提问作者Adnan.
相关产品推荐
相关产品推荐

