-7

T2 インスタンスで実行するように Chef マスター サーバーを再構築しています。つまり、VPC に移動しています。古いマスターは 11.10.4 を実行しており、私がいじっていた新しいマスターは 11.16.4 を実行しています。VPC 内に適切なサーバーを構築するところまで来ましたが、Apache のセットアップでハングアップします。

ohai[reload_users] アクション reload[2014-11-25T08:13:58-06:00] エラー: プラグインの実行中にエラーが発生しました: #<Ohai::Exceptions::AttributeNotFound: そのような属性はありません: 'passwd'

具体的には、レシピのこのコードが気に入らないようです

if node[:etc][:passwd][:apache] == nil
    ohai "reload_users" do
        plugin "passwd"
        action :reload
    end
end

私は周りを見回して、ohaiでこの記事を見つけました

Ohai 6 では、passwd プラグイン (passwd.rb という名前) が「current_user」属性を設定します。このデータを使用するには、この事実を知る必要があります。
require_plugin("passwd")

Ohai 7 では、ユーザーの操作は属性名に基づいています。データを収集したい属性の名前のみを指定してください。Ohai 7 は、どのプラグインが必要かを判断し、データを収集します。


Ohai 7 では、current_userが「currentuser」に依存していることを確認するために、基礎となる詳細を知る必要はありません。

似てる…でも交換plugin "passwd"するdepends 'currentuser'と失敗するのも失敗。

私はOhai 7を使用していると思います(ショーgem listohai (7.4.0)。私はルビーの男ではないので、少しあいまいです。このコードは正確に何をしているのでしょうか? これは、古い Opscode クックブックからリポジトリにカスタム追加されたものです。私たちのクックブックの大部分は、もう会社で働いておらず、これに対する答えも知らない他の誰かによって書かれました。コメントアウトすると問題なく動作し、Apache がインストールされますが、理解せずに一部のコードを削除するだけでは不十分です。

4

1 に答える 1

7

OHAI 7 では、特定の機能が提供されているファイル名に基づいてプラグインをリロードする必要はありません (また、リロードすることもできません)。代わりに、リロードする特定の属性に基づいてリロードします。

したがって、 の属性はnode['etc']['passwd']引き続き という名前のプラグインによって提供されpasswd.rbますが、その方法で再ロードすることはできません。代わりに、node['etc']どのファイルからデータが入力されたかに関係なく、データを に再ロードする必要があります。

レシピで次のコードを使用して、パスワード データをリロードできます。

ohai "reload_users" do
  plugin "etc"
  action :reload
end

これは、 https://docs.getchef.com/ohai.html#id3のドキュメントから取得したものです。

于 2014-11-25T15:39:20.693 に答える