【问题标题】:Retrieve details of a runlist from a node using CHEF使用 CHEF 从节点检索运行列表的详细信息
【发布时间】:2020-12-28 00:34:35
【问题描述】:

如何使用 CHEF 检索在特定节点的运行列表中列出的所有说明书/配置文件的名称?

ohai 属性 node['recipes'] 没有给我指定节点的运行列表中的配方列表。

是否有任何其他方法可以检索特定节点的运行列表,以便可以对检索到的特定节点的运行列表信息进行某些检查?

【问题讨论】:

  • 当您提到“使用 CHEF”时,您的意思是要通过 Chef recipe 或 knife 查找节点信息?
  • 知道这两种方法会很棒;通过食谱和/或刀。
  • knife 很简单,knife node show NODENAME -a 'run_list'
  • 在节点属性出现在节点数据库和搜索中之前,您可能需要成功收敛节点。关注的属性将是 node['run_list']node['recipes']node['expanded_run_list']node['roles'],具有不同的详细程度。如果您有一个旧客户端(例如 Chef 12),那么这些节点属性可能不会出现或可能没有完全填充。

标签: attributes chef-infra


【解决方案1】:

Chef search 可以对 Chef 服务器中索引的数据使用:

knife 在工作站上

knife 命令可以在工作站上用于搜索节点数据。如果节点名称已知并且我们想查看示例节点testbox1.home.net 的run_list 属性

knife node show testbox1.home.net -a 'run_list'

如果节点名称未知,但我们知道说明书就是它的 run_list。这将在其 run_list 中返回与 recipe[my_cookbook] 匹配的节点:

knife search node 'run_list:recipe\[my_cookbook\]'

search 来自客户通过厨师食谱

可以使用search 功能从“食谱”中执行类似的搜索。

如果节点名称已知并且我们想要获取testbox1.home.net 的run_list。在我的recipes/default.rb

search(:node, 'name:testbox1*', 
  :filter_result => {
    'name' => [ 'name' ],
    'runlist' => [ 'run_list' ]
 } ).each do |details|
    puts "#{details['name']}: #{details['runlist']}"
end

如果节点名称未知,但我们知道recipe[my_cookbook] 在它的run_list 中。在我的recipes/default.rb

search(:node, 'run_list:recipe\[cookbook1\]',
  :filter_result => {
    'name' => [ 'name' ],
    'runlist' => [ 'expanded_run_list' ]
  } ).each do |details|
    puts "#{details['name']}: #{details['runlist']}"
end

注意:我已应用过滤器仅提取上述示例所需的数据。如果:filter_result 被省略,那么完整的信息将被检索到details

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2019-05-06
    • 1970-01-01
    • 2020-04-15
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多