如何分发自定义Ohai插件

时间:2014-08-20 23:12:54

标签: chef

我正在编写一个Ohai插件来添加一些自定义属性供厨师 - 客户使用。我在哪里包含plugin.rb文件?

它在食谱里面吗?

或者我是否必须将其复制到某个标准位置?

厨师文档和其他教程没有提供有关这些信息(或者我一定错过了一个非常明显的事实)。我知道在Puppet中你可以在模块的lib / facter /文件夹中包含自定义事实。在厨师中是一样的吗?

2 个答案:

答案 0 :(得分:6)

这并不像听起来那么难,但我同意Ohai 7上的文档缺少Ohai 6 docs中提供的一些信息。

但是,ohai resourceohai cookbook正是您要找的。可以在recipe of mine中找到使用它的示例。

基本上,您首先必须将插件的.rb文件放入Ohai的插件路径(node[:ohai][:plugin_path]),然后重新加载Ohai以使其中的属性可用。现任厨师:

ohai "reload" do
  action :reload
end

template "#{node[:ohai][:plugin_path]}/myplugin.rb" do
  notifies :reload, "ohai[reload]"
end

答案 1 :(得分:0)

一直以来,使用自定义ohai插件的工作流程都发生了多次变化。那是厨师。这对厨师来说是正常的!

首先确保您使用的是最新的ohai cookbook(目前为5.​​2.0)

如果您使用chef-server,您可以按照以下方式执行此操作:

knife cookbook site download ohai
cd ~/you/cookbooks/folder
tar xzf ohai-5.2.0.tar.gz
rm ohai-5.2.0.tar.gz
knife cookbook upload ohai

在官方site上,没有任何案例如何使用自定义插件。

假设您已经部署了一个插件(ohai版本7)。

将其包含在您想要的食谱之后的任何应用程序/包装器中:

ohai_plugin 'myplugin_status_ohai_plugin'

在你的应用程序/包装器中添加一个文件,在files/default/myplugin_status_ohai_plugin.rb中包含你的插件代码。就这样。默认情况下,您的插件将安装到Chef config目录中“ohai”目录下名为“plugins”的目录中。安装和插件收集数据功能将在编译时触发。

如果您未指定/etc/chef/ohai/plugins作为chef-client配置中的附加路径,则会发出警告。但默认情况下会使用/etc/chef/ohai/plugins

要摆脱警告,请使用chef-client食谱,食谱chef-client::config,节点变量node['ohai']['plugin_path']作为从中加载Ohai插件的附加路径。