Ansible 漂亮的打印 json

问题描述 投票:0回答:1

当我运行我的剧本时,我得到了正确的 json 格式的调试输出,我想要它

"ansible_facts": {
    "routes": [
        {
            "subnet": "10.0.0.0/24"
        },
        {
            "subnet": "10.0.1.0/24"
        }
    ]
},

但是当我使用 local_action 指令将其导出到文件时,它显示如下

[{"subnet": "10.0.0.0/24"}, {"subnet": "10.0.1.0/24"}

Ansible 中是否有任何可用的漂亮打印模块可以以与我在调试消息中看到的方式相同的方式导出我的文件?

谢谢!

json ansible pretty-print
1个回答
3
投票

不完全是您在屏幕上获得的输出,但您可以在通过

template
 过滤器传递变量后使用 
to_nice_json
任务来打印变量。示例:

---
- hosts: localhost
  gather_facts: false
  vars:
    my_ansible_facts:
      routes:
      - subnet: 10.0.0.0/24
      - subnet: 10.0.1.0/24

  tasks:
  - template: src=nice_yaml_filter.j2 dest=/tmp/nice_yaml_filter.out

请注意,我没有使用与您相同的变量,只是我填充的

my_ansible_facts
变量。

以及模板文件的内容,

nice_yaml_filter.j2
:

{{ my_ansible_facts | to_nice_json }}

结果:

[http_offline@greenhat-32 ANSIBLE_TESTS]$ cat /tmp/nice_yaml_filter.out 
{
    "routes": [
        {
            "subnet": "10.0.0.0/24"
        },
        {
            "subnet": "10.0.1.0/24"
        }
    ]
}[http_offline@greenhat-32 ANSIBLE_TESTS]$ 

干杯

© www.soinside.com 2019 - 2024. All rights reserved.