如何避免显示跳过的 Ansible 任务?

如何避免显示跳过的 Ansible 任务?

我的剧本的输出总是被关于哪些任务被跳过的无用输出所淹没,这使得浏览和查找我正在寻找的特定信息变得很烦人且耗时。

以下是一个剧本示例

- name: Stopping Puppet Agent
  service: name=pe-puppet state=stopped
  ignore_errors: true
  register: result
- include: rollback/restart-pe-puppet.yml
  when: result|failed

以及相关输出:

TASK: [name | Stopping Puppet Agent] **************************************
<server.name> REMOTE_MODULE service name=pe-puppet state=stopped
changed: [server.name] => {"changed": true, "name": "pe-puppet",     "state":"stopped"}

TASK: [name | judge_log msg='Restarting pe-puppet'] ***********************
skipping: [server.name]

TASK: [name | starting pe-puppet] *****************************************
skipping: [server.name]

TASK: [name | judge_log msg='pe-puppet restart successful'] ***************
skipping: [sserver.name]

TASK: [name | judge_log msg='pe-puppet restart failed' sec=FATAL] *********
skipping: [server.name]

TASK: [name | fail msg="Failed to start pe-puppet."] **********************
skipping: [server.name]

TASK: [name | judge_log msg='{{APP_NAME | capitalize}} deployment failed.'] ***
skipping: [server.name]

TASK: [name | fail msg="The {{APP_NAME | capitalize}} deployment failed."] ***
skipping: [server.name]

几乎所有这些输出对我来说都是无用的。它display_skipped_hosts表示它仍然会导致任务标题出现。有没有办法完全忽略跳过的任务?

答案1

我使用另一种方法,无需更改任何代码:

Ansible 使用“默认”回调插件来显示输出,但您可以使用“skippy”回调插件代替“默认”。除跳过的任务外,“skippy”使用“默认”。

要使用“skipped”插件,请在 ansible.cfg 文件中添加以下行(或取消注释):

stdout_callback = skippy

要本地化您的 ansible.cfg,请使用命令:

ansible --version

如果您没有此文件,请从 ansible 源获取示例文件并将其复制到您调用 ansible 的工作文件夹中。

答案2

现在,该skippy模块已被弃用。

ansible.cfg在项目根目录下 创建,并添加以下指令:

[defaults]
display_skipped_hosts = no

您还可以编辑全局配置文件/etc/ansible/ansible.cfg

答案3

如果文档说标题仍然出现,那么除非你通过编辑代码来改变 ansible 行为,否则你无法避免它。如果你仍然坚持要编辑它,那么你可以尝试找到文件lib/ansible/callbacks.py并添加这行字符串

msg = ''

这行

display(msg, color='cyan', runner=self.runner)

相关内容