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

Ansible如何在条件语句中检查变量内容存在于另一变量且无Jinja告警

问题原因

触发如下告警的核心原因是Ansible的when条件语句本身默认处于Jinja2解析上下文环境,不需要额外嵌套{{ }}这类模板分隔符来引用变量,嵌套使用属于不符合语法规范的写法。

[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}.

正确实现方案

直接将变量B作为参数传入search过滤器即可,不需要加{{ }}、也不需要用引号包裹,即可实现动态子串匹配(不需要全匹配),同时消除告警:

vars:
    B: 'test-cert'

  tasks:

  - name: Collect bigip facts
    bigip_device_facts:
      provider: '{{ provider }}'
      gather_subset: ssl-certs
    register: ssl_certs

  - name: debug SSL cert exists
    debug:
      msg: "cert-test already exists"
    when: ssl_certs is search(B)
优化补充

如果变量B的内容可能包含.、*这类正则特殊字符,为了避免被search当成正则规则解析,可以加regex_escape过滤器做转义,匹配结果会更准确:

when: ssl_certs is search(B | regex_escape)

内容的提问来源于stack exchange,提问作者stefan-engel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:27:02