Ansible漂亮的打印json

时间:2020-10-16 18:21:05

标签: json ansible pretty-print

当我运行剧本时,我会以所需的正确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中的打印模块,它们的输出方式与我在调试消息中看到的方式相同?

谢谢!

1 个答案:

答案 0 :(得分:0)

并非完全是您在屏幕上看到的输出,但是在将变量通过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]$ 

欢呼