使用 Ansible 显示输出

使用 Ansible 显示输出

我有一个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将回调插件与debugAnsible 2.7+ 中的模块一起使用,如下所示:

- name: "Test Output"
  debug:
    msg: "{{ test_result.stdout_lines | join('\n') }}"

相关内容