我的剧本的输出总是被关于哪些任务被跳过的无用输出所淹没,这使得浏览和查找我正在寻找的特定信息变得很烦人且耗时。
以下是一个剧本示例
- 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)