Ansible控制台输出和日志级别

时间:2016-06-01 04:26:32

标签: logging ansible ansible-playbook

我已经创建了一个部署堆栈的角色。我也在担任角色的问题(如果堆栈失败,请回滚到某些任务)。然而,虽然一切顺利,但在控制台上回滚任务显示为skipped个任务(在非详细模式下也是如此)。

TASK: [deploy-stack | Deleting_Validation_Template] ***************************
skipping: [10.17.10.150]

TASK: [deploy-stack | shell echo 'Template Validation has Failed'] ************
skipping: [10.17.10.150]

TASK: [deploy-stack | Deploying_the_Stack..] **********************************
changed: [10.17.10.150]

1)是否可以从控制台隐藏skipped个任务?

2)我注意到,如果我没有以超级详细模式运行playbook(ansible-playbook stack.yml -vvvv),则ansible日志文件不会填充详细信息(基本上我们在控制台中看到的,正在进入ansible日志文件/var/log/ansible.log)。是否可以定义日志级别以将更多信息输入到日志文件中,同时以非详细模式运行playbook(ansible-playbook stack.yml)?

1 个答案:

答案 0 :(得分:2)

1)如上面的评论中所述,您可以关闭已跳过任务的状态,但不能关闭它们的名称 - 参数display_skipped_hosts
如果你想进一步自定义输出,你需要一些代码并让你拥有Ansible的 stdout 插件:

  • 获取default.py回调插件,根据需要进行修改,然后放置到playbook的callback_plugins子目录(或Ansible全局插件目录)
  • stdout_callback参数设置为指向您的自定义插件
  • 请注意,v2_runner_on_*方法中的模板化任务名称不可用,因此如果您不想打印跳过的任务的名称,则需要将名称捕获到v2_playbook_on_task_start内的全局字典中,但是不要在此方法中打印出来,然后打印或不在v2_runner_on_*方法中打印它们(请参阅profile_tasks.py中使用self.statstask._uuid作为参考)

2)没有简单的解决方案,因为默认记录器与用于将信息打印到控制台的方法相同。
但是如果您拥有自定义标准输出插件,则可以打印提供log_only=Trueself._display.display方法的详细信息(例如,参见default.py回调中的v2_playbook_on_stats)。 或者,您可以创建另一个仅用于记录的回调插件。