Opscode Chef Ohai 插件 - 如何让自定义插件自动运行?

Opscode Chef Ohai 插件 - 如何让自定义插件自动运行?

Ohai 文档不完整。以下是我目前能做的事情:

  • 我创建了一个自定义插件,添加了一个名为“my_custom_data”的节点数据
  • 当我在 IRB 中手动加载它时它可以工作
  • 我使用 Ohai cookbook 将其加载到需要它的服务器上

但是,Ohai 不会加载它,无论是在 Chef 运行期间还是在我手动运行 Ohai 时都不会加载它。

这里的文档对于回答这个问题没什么用。http://docs.opscode.com/ohai.html

答案1

您的问题暗示您已在使用 Ohai cookbook 分发插件,并且大部分工作正常 - 即,您的自定义插件最终安装到/etc/chef/ohai_plugins(在默认配置中)。如果是这种情况,则几乎肯定正在尝试加载插件 - 并且插件失败。

Ohai 并不担心插件失败 - 它只会转到下一个插件。

手动运行时,请确保告诉 ohai 查看附加插件目录。以下是失败的原因(对于名为“aws”的自定义插件):

[zts@ip-172-31-39-167 ~]$ ohai aws
[2013-07-25T22:14:53+00:00] INFO: [inet6] no default interface, picking the first ipaddress
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-6.16.0/lib/ohai/system.rb:247:in `attributes_print': I cannot find an attribute named aws! (ArgumentError)
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-6.16.0/lib/ohai/application.rb:101:in `block in run_application'
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-6.16.0/lib/ohai/application.rb:100:in `each'
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-6.16.0/lib/ohai/application.rb:100:in `run_application'
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-6.16.0/lib/ohai/application.rb:75:in `run'
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-6.16.0/bin/ohai:51:in `<top (required)>'
    from /usr/bin/ohai:23:in `load'
    from /usr/bin/ohai:23:in `<main>'

[zts@ip-172-31-39-167 ~]$ ohai aws -d /etc/chef/ohai_plugins
[2013-07-25T22:15:05+00:00] INFO: [inet6] no default interface, picking the first ipaddress
{
  "region": "eu-west-1",
  "rds": {
<--snip-->

最后,如果您没有看到任何输出(但没有错误),请启用调试日志并搜索输出以找到与您的插件相关的部分:

[zts@ip-172-31-39-167 ~]$ ohai aws -d /etc/chef/ohai_plugins -l debug
[2013-07-25T22:17:24+00:00] DEBUG: Loading plugin os
[2013-07-25T22:17:24+00:00] DEBUG: Loading plugin kernel
[2013-07-25T22:17:24+00:00] DEBUG: Loading plugin ruby
[2013-07-25T22:17:24+00:00] DEBUG: Loading plugin languages
<-- huge amounts of logs removed -->
[2013-07-25T22:18:21+00:00] DEBUG: Loading plugin aws
<-- way more logs here -->

答案2

您需要确保 /etc/chef/client.rb 中有以下行。如果您使用 knife bootstrap,则需要指定一个模板。

Ohai::Config[:plugin_path] << "/etc/chef/ohai_plugins"

相关内容