如何在 Ansible 中将字符串转换为字典?

How to convert a string to dict in Ansible?

我想转换python的简单输出,我试着按照post .
但它在我的示例代码中似乎不起作用。 data 是来自 shell 任务输出的字符串。

如何使 minio_list1['test'] 合法化?

---
- name: data test
  hosts: localhost

  vars:
    data: "test: something"

  tasks:
  - name: get the list
    set_fact:
      minio_list1: "{{ minio_list1 | default({}) | combine ( { item.split(':')[0]: item.split(':')[1] } ) }}"
    with_items:
      - data

  - name: print
    debug:
      msg: "{{ minio_list1 }}"

  - name: print
    debug:
      msg: "{{ minio_list1['test'] }}"

既然 test: something 是一个有效的 YAML 片段,为什么不使用 Ansible 的 YAML 功能,所以过滤器 from_yaml?

鉴于剧本:

- hosts: localhost
  gather_facts: no
  vars:
    data: "test: something"

  tasks:
    - set_fact:
        minio_list1: "{{ data | from_yaml }}"

    - debug:
        var: minio_list1['test'] # or minio_list1.test

这产生:

TASK [set_fact] *************************************************************
ok: [localhost]

TASK [debug] ****************************************************************
ok: [localhost] => 
  minio_list1['test']: something