如何阻止Ansible在屏幕上显示输出

106次阅读
没有评论

问题描述

在使用Ansible时,希望阻止输出显示在屏幕上,并将输出插入到一个文件中。他在playbook中执行了一个远程服务器上的命令,并将其日志输入到本地服务器上。然而,输出总是显示在屏幕上,给故障排除带来了困难和干扰。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以通过使用Ansible的回调插件来实现这一目标。在你的ansible.cfg文件中设置相关配置。
以下是几个选项:
– 使用null回调插件,可以完全不在屏幕上打印任何内容:

这个回调插件可以阻止将事件输出到屏幕上。
– 使用treelog_plays模块,将输出写入文件。
我建议在你的情况下使用log_plays模块。
请注意,这些回调插件和模块的具体用法可以参考Ansible的官方文档。你可能需要使用一些过滤器的组合来实现你想要的效果,只过滤部分输出而不是全部输出。
以下是一个示例的ansible.cfg文件:

[defaults]
# 设置回调插件
stdout_callback = log_plays
# 设置输出文件路径
log_path = /path/to/output.log

在上面的示例中,我们将stdout_callback设置为log_plays,这将使用log_plays回调插件将输出写入文件。同时,我们还设置了log_path,指定了输出文件的路径。
请根据你的实际需求修改配置文件中的路径和选项。

方案2

使用脚本或工具来管理输出可能会增加复杂性,并且需要确保输出的正确写入文件。
另一种方法是编写脚本或使用工具来控制输出的写入。你可以使用一些第三方工具来捕获并重定向Ansible的输出到文件中。
以下是一个简单的示例脚本,可以将Ansible的输出重定向到文件中:

#!/bin/bash
# 运行Ansible playbook并将输出重定向到文件
ansible-playbook your_playbook.yml > output.log

在这个示例中,我们使用ansible-playbook命令运行Ansible playbook,并将输出重定向到output.log文件中。
请注意,使用脚本或工具来管理输出可能会增加复杂性,并且需要确保输出正确写入文件。

正文完