Bash ansbile stdout_行到新字符串

Bash ansbile stdout_行到新字符串,bash,ansible,ansible-2.x,Bash,Ansible,Ansible 2.x,我试图将bash工具的db输出转换成ansbisle字符串,但没有找到任何有效的解决方案 - set_fact: db_data: "{{ db.stdout_lines }}" - debug: var=db_data 这里是调试输出 TASK [debug] ******************************************************************************************************

我试图将bash工具的db输出转换成ansbisle字符串,但没有找到任何有效的解决方案

   - set_fact:
        db_data: "{{ db.stdout_lines  }}"
   - debug: var=db_data
这里是调试输出

TASK [debug] ***********************************************************************************************************************************************************************
ok: [localhost] => {
    "db_data": [
        "host: localhost",
        "username: user",
        "password: pass",
        "database: db_name"
    ]
}
如何将主机、用户名、密码和数据库作为唯一字符串获取

- debug:
       msg: "{{ item.split(':')[1] }}"
  with_items: " {{ db_data }} "
问:“获取主机、用户名、密码和数据库作为唯一字符串。”

答:创建字典而不是列表。然后简单地引用属性。比如说

   - set_fact:
        db_data: "{{ db_data|default({})|combine(item|from_yaml) }}"
      loop: "{{ db.stdout_lines }}"
    - debug:
        var: db_data
    - debug:
        var: db_data.username
给予


您好,欢迎来到stackoverflow,谢谢您的回答。虽然这段代码可能会回答这个问题,但是你能考虑为你解决的问题增加一些解释,以及你是如何解决的?这将帮助未来的读者更好地理解你的答案并从中学习。
    "db_data": {
        "database": "db_name", 
        "host": "localhost", 
        "password": "pass", 
        "username": "user"
    }

    "db_data.username": "user"