如何更改所有节点的chef-client的默认日志级别

时间:2016-06-20 23:16:28

标签: chef

背景 我们使用Splunk Universal Forwarder从我们的节点(OS X笔记本电脑)中获取所有主厨客户端日志。我们将这些日志放入多个Splunk仪表板中,因为Chef Server UI不是最容易使用的。 有点不重要:我正在直接从节点中获取日志,因为我不确定是否有更好的方法来获取日志并将它们导入Splunk。

目标 默认情况下,在自动厨师 - 客户端运行期间创建的日志并不足以满足我的需求。 As outlined on Chef's documentation,log_level的默认值设置为:warn(当终端可用时)或:info(当终端不可用时)。这些情况适合后者,因此记录为:info。我宁愿他们总是记录为:警告。

不幸的是,我在他们的文档中找不到有关如何执行此操作的任何内容。 From their chef-client readme,我发现现在不推荐使用属性node['chef_client']['log_level']进行设置。它提到使用node['chef_client']['config']设置它们,但我无法在使用node['chef_client']['config']的任何地方找到文档。

谢谢!

编辑:我们有数百个节点,我需要一个Chef支持的方法来从属性或菜谱(或其他)中执行此操作。我无法进入并手动更改client.rb文件上的log_level值(无论如何都会改变回来,除非我找出设置的位置更改默认值)。如上所述,将node['chef_client']['log_level']设置为:warn现已弃用。

2 个答案:

答案 0 :(得分:2)

简单的做法就是运行chef-client -l warn,但您可能已经考虑过了。

要在代码中执行此操作,但没有黑客主厨本身,花几分钟玩UTSL让我想知道:将{>> 1}}中的以下内容放在一起可能会有效:

/etc/chef/client.rb

答案 1 :(得分:1)

我认为最好的方法:

制作一本包裹chef-client cookbook的食谱,我们称之为my_company_chef-client

depends 'chef-client', '~> 4.6'中添加一行my_company_chef-client/metadata.rb

我可以在这里留下次要的升级,因为我对这本食谱质量和升级过程非常有信心,将食谱与您自己的食谱一起提供是一个品味问题,berkshelf是最常用的据我所知,但讨论它将超出这个答案的范围。

my_company_chef-client/attributes/default.rb

default['chef-client']['config']['log_level'] = :warn

my_company_chef-client/recipes/default.rb

include_recipe 'chef-client::config'

然后只需将my_company_chef-client添加到所有节点运行列表中。如果您没有所有节点的基本角色或包装器,则从here获取技巧:

knife exec -E 'nodes.find("*") {|n| puts n.run_list << "recipe[my_company_chef-client]" unless n.run_list.include?("recipe[my_company_chef-client]"); n.save }'

有关配置here以及Chef-client cookbook用法的更多详细信息here