gpt4 book ai didi

logging - Ansible 控制台输出和日志级别

转载 作者:行者123 更新时间:2023-12-04 18:23:11 27 4
gpt4 key购买 nike

我已经创建了一个角色来部署堆栈。我也在处理角色的地方(如果堆栈失败,回滚到某些任务)。然而,尽管一切顺利,但在控制台上回滚任务显示为 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) 我注意到,如果我没有在超详细模式下运行剧本 (ansible-playbook stack.yml -vvvv),ansible 日志文件不会填充详细信息(基本上我们在控制台中看到的是进入ansible 日志文件 /var/log/ansible.log)。是否可以定义日志级别以将更多信息推送到日志文件,同时以非详细模式 (ansible-playbook stack.yml) 运行剧本?

最佳答案

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

  • default.py回调插件,根据您的需要修改它并将其放置到您的剧本的 callback_plugins 子目录(或 Ansible 全局插件目录)
  • 设置stdout_callback指向您的自定义插件的参数
  • 请注意,模板化任务名称在v2_runner_on_* 中不可用。方法,所以如果你不想打印跳过的任务的名称,你需要将名称捕获到 v2_playbook_on_task_start 中的全局字典中。但不是用这个方法打印出来,以后再打印或者不打印里面v2_runner_on_*方法(参见 self.statstask._uuidprofile_tasks.py 中的使用以供引用)

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

关于logging - Ansible 控制台输出和日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com