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

Ansible基于vars_prompt提示变量条件赋值时结果恒为https问题

问题根因

  • Ansible的vars_prompt返回的所有输入值默认都是字符串类型,Jinja2原生布尔判断规则中,所有非空字符串都会被判定为真。因此即便你输入的是语义为假的no、false类字符串,直接做if https判断时也会判定为真,始终返回https。
  • 你在debug任务中使用了bool过滤器将字符串转为布尔值所以可以正确输出false,但protocol变量的条件判断中没有做类型转换,是问题的直接原因。

修复方案

修改vars段中protocol变量的定义,增加bool过滤器完成类型转换即可:

vars:
  protocol: "{{ 'https' if https | bool else 'http' }}"

如果需要兼容大小写输入(比如用户输入No、NO、FALSE这类值),可以额外增加lower过滤器提升兼容性:

vars:
  protocol: "{{ 'https' if https | lower | bool else 'http' }}"

验证结果

修改后重新执行Playbook,输入no时protocol会正确返回http,输入yes时返回https,符合预期逻辑。


内容的提问来源于stack exchange,提问作者Guido Caffa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 13:06:02