我正在编写一个Ohai插件来添加一些自定义属性供厨师 - 客户使用。我在哪里包含plugin.rb文件?
它在食谱里面吗?
或者我是否必须将其复制到某个标准位置?
厨师文档和其他教程没有提供有关这些信息(或者我一定错过了一个非常明显的事实)。我知道在Puppet中你可以在模块的lib / facter /文件夹中包含自定义事实。在厨师中是一样的吗?
答案 0 :(得分:6)
这并不像听起来那么难,但我同意Ohai 7上的文档缺少Ohai 6 docs中提供的一些信息。
但是,ohai
resource和ohai 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插件的附加路径。