如何在Ansible中将多行字符串转换为dict?

如何在Ansible中将多行字符串转换为dict?,ansible,Ansible,我在Ansible中使用环境变量和query('env','VARIABLE') 我的变量是多行字符串(YAML格式): 当我用Ansible打印变量时,我将它作为一个字符串,行与行之间有\n "msg": ["device: eth0\nbootproto: static\naddress: 192.168.x.x\nnetmask: 255.255.255.0\ngateway: 192.168.x.x"] 有没有方便的方法把它转换成dict?我需要在以后的任务中使用它,

我在Ansible中使用环境变量和
query('env','VARIABLE')

我的
变量
是多行字符串(YAML格式):

当我用Ansible打印
变量
时,我将它作为一个字符串,行与行之间有
\n

"msg": ["device: eth0\nbootproto: static\naddress: 
        192.168.x.x\nnetmask: 255.255.255.0\ngateway: 192.168.x.x"]
有没有方便的方法把它转换成dict?我需要在以后的任务中使用它,以便在配置机器的NIC时加载参数

我尝试使用Jinja2过滤器
-debug:msg=“{{network_settings | from_yaml}}”
,但没有成功

有:

lookup
query
之间的区别主要在于
query
总是返回一个列表

因此:

  • query('env','VARIABLE')
    替换为
    lookup('env','VARIABLE')

  • 或相应地处理列表(内容将位于第一个也是唯一的元素中):

"msg": ["device: eth0\nbootproto: static\naddress: 
        192.168.x.x\nnetmask: 255.255.255.0\ngateway: 192.168.x.x"]
- debug:
    msg: "{{ lookup('env', 'VARIABLE') | from_yaml }}"
- debug:
    msg: "{{ query('env', 'VARIABLE') | first | from_yaml }}"