You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:25:09