chef-client 16不报告有多少资源被更新



我在Ubuntu Focal上使用chef-client 16.8,只是发现它的输出和之前的有很大的不同,

# chef-client -o some_cookbook -l info
...
[2021-01-14T09:45:49+00:00] INFO: Skipping removal of unused files from the cache
[2021-01-14T09:45:49+00:00] INFO: Running report handlers
[2021-01-14T09:45:49+00:00] INFO: Report handlers complete
[2021-01-14T09:45:49+00:00] INFO: Chef::Compliance::Runner#enabled?: Chef InSpec profiles? false
[2021-01-14T09:45:49+00:00] INFO: Chef::Compliance::Runner#enabled?: audit cookbook? false
[2021-01-14T09:45:49+00:00] INFO: Sending resource update report (run-id: 27e9fbeb-118d-4fc3-8de3-8f5f32eae15d)

前一个(chef-client 13.12.3)是这样的:

...
  * execute[echo] action run (skipped due to only_if)
  * file[/tmp/etc/apache2/certs/.changed] action nothing (skipped due to action :nothing)
Running handlers:
Running handlers complete
Chef Client finished, 0/13 resources updated in 06 seconds

显然,chef-client 16没有显示颜色报告,也没有显示更新了多少资源的统计信息。

有谁知道如何设置chef-client 16来显示哪些资源被更改?

Chef 16.0改变了记录器和格式化器的工作方式:

https://github.com/chef/chef/pull/9751

这样做是为了解决一个非常常见的问题,即当通过grep:

之类的管道传输时,输出会神奇地从格式化器更改为记录器。
chef-client | grep "resources updated"

(在没有任何其他配置的情况下,管道通常打印"资源更新";行,当管道连接到grep时会丢失tty, chef-client会自动将输出切换到不再记录该行的日志记录器)

不可能修复这个问题并保持向后兼容性。为了确保这个配置,我们做了很多工作。Rb设置被遵守,cli设置可以覆盖它们,并且命令行运行的chef-client也会记录到/var/log/messages。

仍然不可能在格式化器输出和记录器输出中同时将tty输出输出到日志文件。

对于在客户端配置了日志记录的用户。那么现在可能需要--force-formatter选项:

chef-client --force-formatter

这通常也会记录到日志文件,但会将输出切换到格式化器,如果用户设置了日志记录到日志格式的日志文件,将导致格式的混合,这不是任何人真正想要的,但修复这是上面拉请求结束时讨论的主题。因为Chef 17很可能会被Ruby 3.0所主导,所以在Chef 18之前这个bug不太可能得到修复。

我正在运行chef 16.9.20,我没有这个问题。在chef-client运行后,我得到

Chef Infra Client finished, 15/126 resources updated in 36 seconds

最新更新