Chef infra 如何识别厨师菜谱修改/触及的文件

Chef infra 如何识别厨师菜谱修改/触及的文件,chef-infra,chef-recipe,Chef Infra,Chef Recipe,我想查找chef客户端上由chef sever触摸/修改/创建的文件 chef client-ldebug命令提供大量输出。试试看 它将为您提供所有已修改资源的列表。请尝试 它为您提供了所有已修改资源的列表。实际上,在Chef 11.8.2信息(非调试)日志中,非常清楚地说明了哪些资源未被触及。他们有(最新的)写在他们旁边。另外,如果您将日志输出到控制台而不是文件中,则更改的资源将显示为绿色。实际上,在Chef 11.8.2信息(非调试)日志中,非常清楚地说明了未触及的资源。他们有(最新的)写在

我想查找chef客户端上由chef sever触摸/修改/创建的文件

chef client-l
debug命令提供大量输出。

试试看

它将为您提供所有已修改资源的列表。

请尝试


它为您提供了所有已修改资源的列表。

实际上,在Chef 11.8.2信息(非调试)日志中,非常清楚地说明了哪些资源未被触及。他们有(最新的)写在他们旁边。另外,如果您将日志输出到控制台而不是文件中,则更改的资源将显示为绿色。

实际上,在Chef 11.8.2信息(非调试)日志中,非常清楚地说明了未触及的资源。他们有(最新的)写在他们旁边。此外,如果您将日志输出到console而不是文件中,则更改的资源将显示为绿色。

如果您在chef客户端运行中配置并安装了,则可以获得更新的资源(即更改的内容)以及您可能认为有用的其他物品的列表

在报表处理程序中调用的
report()
函数将传递一个
run\u status
对象,该对象包含以下内容:

  • 节点
    ,发生chef客户端运行的节点
  • all_resources
    ,当前chef客户端运行的resource_集合属性中包含的所有资源的列表
  • updated_resources
    ,标记为在chef客户端运行后更新的资源列表

如果您在chef客户端运行中配置并安装了,您可以获得更新的资源(即更改的内容)以及其他有用的东西的列表

在报表处理程序中调用的
report()
函数将传递一个
run\u status
对象,该对象包含以下内容:

  • 节点
    ,发生chef客户端运行的节点
  • all_resources
    ,当前chef客户端运行的resource_集合属性中包含的所有资源的列表
  • updated_resources
    ,标记为在chef客户端运行后更新的资源列表

如果要在chef的上下文中列出已修改的资源,可以安装:

然后将以下代码附加到
/etc/chef/client.rb中,如:

require 'chef/handler/updated_resources'

updated_resources_handler = SimpleReport::UpdatedResources.new
report_handlers << updated_resources_handler

如果要在chef的上下文中列出已修改的资源,可以安装:

然后将以下代码附加到
/etc/chef/client.rb中,如:

require 'chef/handler/updated_resources'

updated_resources_handler = SimpleReport::UpdatedResources.new
report_handlers << updated_resources_handler
2018年,“最简单”的方法是使用
-F min
运行,这将在运行
chef-client-W
chef-client
时将输出减少到仅限字符集,具体取决于每个资源的状态,并在仅实际/潜在更改的资源末尾提供一个很好的摘要

根据几年前的一篇博文,您应该能够编辑
client.rb
,并添加
verbose\u logging false
log\u level:info
以减少混乱,但我在这方面运气不太好

2018年,“最简单”的方法是使用
-F min
运行,这将在运行
chef-client-W
chef-client
时将输出减少到仅限字符集,具体取决于每个资源的状态,并在实际/潜在更改的资源末尾提供一个很好的摘要


根据几年前的一篇博文,您应该能够编辑
client.rb
,并添加
verbose\u logging false
log\u level:info
以减少混乱,但我在这方面运气不太好

做出这些更改的不是chef服务器,而是chef客户端:-)做出这些更改的不是chef服务器,而是chef客户端:-)这取决于用例。为了便于监控,请遵循我的回答。对于开发/调试,请遵循Draco的。这取决于用例。为了便于监控,请遵循我的回答。对于开发/调试,请遵循Draco的。
def report
  Chef::Log.info "File opened by this chef client run:"
  %x( ls /proc/#{Process.pid}/fd -lh | awk '{print $11}').split("\n").uniq!.each {|fd| Chef::Log.info "  #{fd.to_s}"}
end