如何在Ansible中将多行字符串转换为dict?
我在Ansible中使用环境变量和如何在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?我需要在以后的任务中使用它,
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 }}"