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

Ansible:如何基于大写存储的变量实现条件执行?

解决Ansible中Oracle SQL返回值的条件匹配问题

你的核心问题是没有正确提取注册变量cdb_on中的实际返回值。从执行结果可以看到,oracle_sql模块的查询结果嵌套在msg字段的二维列表里(msg: [["FALSE"]]),而你之前的条件判断都是直接对整个cdb_on对象进行操作,自然无法匹配到目标值。

正确的条件写法

要匹配字面量"FALSE",需要先提取出msg中的具体值,再进行判断:

- name: run
  when: cdb_on.msg[0][0] == 'FALSE'

解释之前的错误写法

  • when: cdb_on | bool == FALSE:直接将整个注册对象转布尔值,结果必然是true(因为cdb_on是一个非空字典),所以条件不成立。
  • when: cdb_on == '"FALSE"' 或 when: cdb_on == 'FALSE':cdb_on是包含多个字段的字典,和字符串"FALSE"完全不相等,条件永远不成立。
  • when: cdb_on | upper == "FALSE":对字典执行upper过滤没有意义,无法得到目标字符串。

额外说明

如果你希望按布尔值判断,也可以先提取值再转布尔类型:

- name: run
  when: cdb_on.msg[0][0] | bool == false

内容的提问来源于stack exchange,提问作者uwe A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:25:16