ansible的debug的msg看官网上是str类型,msg: value ,但这个value不仅仅是str,还可以是list,dict,用jinja,msg: "{{value}}" ,这个“{{value}}”虽然有双引号,但是jinja2引擎解析后,也可以是list,dict,不代表是字符串
debug:
msg: "{{ [1, 2, 3] }}" # 输出列表:[1, 2, 3]
debug:
msg: "{{ {'key': 'value'} }}" # 输出字典:
msg 参数实际接受任意类型
虽然文档标注为 string,但源码中 msg 是通用参数,内部会智能处理数据类型:
若值为字符串 → 直接输出。
若值为 list/dict → 自动调用 to_nice_json() 或类似方法转换为可读格式
Jinja2 模板引擎的动态解析特性
双引号内的 {{ value }} 不是普通字符串
当使用 msg: "{{ value }}" 时:
双引号只是 YAML 的语法要求(防止 { 被误解析为字典)。
Jinja2 会在任务运行时动态解析 {{ value }},根据变量 value 的实际类型渲染结果。
最终输出的是 value 的原始数据类型(如 list/dict),而非字符串。
– _java_python 3个月前