如何将Ansible中字符串格式的变量转换为字典列表?
解决Ansible字符串转字典列表的问题
核心原因
你在test.yml里把字典列表用双引号包裹,导致变量被解析成字符串类型,而非原生的YAML列表/字典结构。
解决方案:使用from_yaml过滤器
Ansible内置的from_yaml过滤器可以直接将符合YAML格式的字符串解析为对应的原生数据结构,这是最直接有效的方法。
修改后的Playbook示例
- hosts: localhost vars_files: - test.yml tasks: - name: 将字符串转为字典列表 set_fact: test: "{{ ACTIONS | from_yaml }}" - name: 验证类型(应为list) debug: msg: "{{ test | type_debug }}" - name: 遍历验证每个元素 debug: msg: "a的值: {{ item.a }}, b的值: {{ item.b }}" loop: "{{ test }}"
其他注意事项
- 如果你的字符串中使用了双引号(比如
ACTIONS: "[{a: \"123\", b: \"1\"}]"),确保字符串本身的转义是正确的,from_yaml依然可以正常解析。 - 避免手动用
split/map等方法拆分字符串,容易因为格式细节(比如空格、引号)出错,from_yaml是官方推荐的结构化字符串解析方式。
内容的提问来源于stack exchange,提问作者Coco
相关产品推荐
相关产品推荐

