web-dev-qa-db-ja.com

Opscode Chef Ohaiプラグイン-カスタムプラグインを自動的に実行する方法は?

Ohaiのドキュメントは不完全です。これが私がこれまでにできたことです:

  • 「my_custom_data」という1つのノードデータを追加するカスタムプラグインを作成しました
  • iRBに手動でロードすると機能します
  • Ohaiクックブックを使用して、それを必要とするサーバーにロードしました

ただし、Chefの実行中も、Ohaiを手動で実行した場合も、Ohaiはそれをロードしません。

ここにあるドキュメントは、この質問に答えるのにほとんど役に立ちません。 http://docs.opscode.com/ohai.html

4
JDS

あなたの質問は、プラグインを配布するためにすでにOhaiクックブックを使用していて、それだけが機能していることを意味します。つまり、カスタムプラグインは最終的に/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 -->
3
zts

/etc/chef/client.rbに次の行があることを確認する必要があります。ナイフブートストラップを使用している場合は、テンプレートを指定する必要があります。

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