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

陈阿

我使用环境变量在Ansible中设置了一个事实 query('env', 'VARIABLE')

VARIABLE是多行字符串(YAML格式):

device: eth0
bootproto: static
address: 192.168.x.x
netmask: 255.255.255.0 
gateway: 192.168.x.x

当我VARIABLE用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 }}"没有成功。

Techraf

在文档中一个重要说明

lookup之间的区别query主要是query总是返回列表

所以:

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

    - debug:
        msg: "{{ lookup('env', 'VARIABLE') | from_yaml }}"
    
  • 或相应地处理列表(内容将在第一个和唯一元素中):

    - debug:
        msg: "{{ query('env', 'VARIABLE') | first | from_yaml }}"
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章