Python 如何转换字符串“0”;键=值&引用;用ansible和字典配对?

Python 如何转换字符串“0”;键=值&引用;用ansible和字典配对?,python,ansible,mariadb,jinja2,galera,Python,Ansible,Mariadb,Jinja2,Galera,本质上,我就是在寻找这个,但对于ansible/jinja2: 我从mariadb galera服务器wsrep_provider_选项中获得一个以分号分隔的键=值对列表: mariadb_wsrep_provider_options_output = 'base_dir = /var/lib/mysql/; base_host = 192.168.1.101; base_port = 4567;' 在使用ansibleregister存储该输出后,我尝试将其解析到字典中,如下所示: mari

本质上,我就是在寻找这个,但对于ansible/jinja2:

我从mariadb galera服务器wsrep_provider_选项中获得一个以分号分隔的键=值对列表:

mariadb_wsrep_provider_options_output = 'base_dir = /var/lib/mysql/; base_host = 192.168.1.101; base_port = 4567;'
在使用ansible
register
存储该输出后,我尝试将其解析到字典中,如下所示:

mariadb\u wsrep\u提供程序\u选项\u输出:
基本目录:/var/lib/mysql/
基本主机:192.168.1.101
基本端口:4567
...
我尝试过类似的方法,但我不确定如何将其转换回
dict

-调试:
msg:“{mariadb_wsrep_provider_options_output.split(“;”)%}{{item.split(“=”)}}{%endfor%}”

编辑:我让它处理以下任务,但它似乎很笨重:

-设置事实:
new|var:“{{new|var|d([])+[{'key':item.split('=')[0]| trim,'value':item.split('=')[1]| trim}}”
循环:“{mariadb_wsrep_provider_options_output.split(“;”)}”
-调试:
变量:新的变量项2
输出:

    "new_var|items2dict": {
        "base_dir": "/var/lib/mysql/",
        "base_host": "192.168.100.153",
        "base_port": "4567"
    }
试试这个

-设置事实:
新的变量:{{dict({keys}zip({u vals))}
变量:
_arr:{mdb_out.split(';')| map('trim')| select()| list}
_键:“{{u arr | map('regex_replace','^(.*?=(.*)$,'\\1')| map('trim')| list}”
_VAL:“{{u arr | map('regex_replace','^(.*)=(.*)$,'\\2')| map('trim')| list}”
给予

new\u变量:
基本目录:/var/lib/mysql/
基本主机:192.168.1.101
基本端口:“4567”

您的代码只做了少量更改,也可以正常工作

-设置事实:
new_var:“{{new_var}d({}){combine({{u key:{u val})}”
循环:“{mdb_out.split(“;”)}”
时间:项目|长度>0
变量:
_键:“{item.split('=')[0]| trim}”
_val:{{item.split('=')[1]| trim}
谢谢!使用zip()和dict()比循环使用每个选项更容易输出