我有一个PGBouncer 的 Ansible 播放显示 PGBouncer 内置统计模块的一些输出。
我的问题是,当 Ansible 将输出打印到终端时,它会破坏换行符。而不是看到
----------
| OUTPUT |
----------
我懂了
----------\n| OUTPUT |\n----------
有人知道如何让 Ansible“漂亮地打印”输出吗?
答案1
在 Ansible 中没有办法原生地实现你想要的功能。你可以这样做作为解决方法:
ansible-playbook ... | sed 's/\\n/\n/g'
答案2
如果你想要更加人性化的输出定义:
ANSIBLE_STDOUT_CALLBACK=debug
这将使 ansible 使用调试输出模块(以前名为human_log
),它尽管名字不太好听不太冗长,更容易被人类阅读。
如果您收到此模块不可用的错误,请升级 Ansible,或者如果您无法升级 ansible,请在本地添加此模块,它将与 ansible 2.0 或甚至 1.9 等版本一起使用。
配置此功能的另一个选项是添加stdout_callback = debug
到您的 ansible.cfg
答案3
成立这Ansible 项目组论坛中的方法:
- name: "Example test"
command:
...
register: test
- name: "Example test stdout"
debug:
msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
debug:
msg: "{{ test.stderr.split('\n') }}"
我们基本上通过用换行符分割它来将其转换为列表,然后打印该列表。
答案4
如果您希望以实际模仿标准输出的格式查看它,则可以debug
将回调插件与debug
Ansible 2.7+ 中的模块一起使用,如下所示:
- name: "Test Output"
debug:
msg: "{{ test_result.stdout_lines | join('\n') }}"