4

私は、 passenger_apache2 クックブックpassenger_apache2::mod_railsのレシピを含む Chef クックブックを持っています。サーバーの最初の Chef 実行で、これにより 2 つの (有効な) 構成ファイルが作成されました。

# /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-3.0.11/ext/apache2/mod_passenger.so

# /etc/apache2/mods-available/passenger.conf
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-3.0.11
PassengerRuby /usr/bin/ruby1.9.1
PassengerMaxPoolSize 6

これらはクックブックのテンプレート Passenger.load.erb と Passenger.conf.erb をそれぞれ使用して作成され使用node[:languages][:ruby][:ruby_bin]node[:languages][:ruby][:gems_dir]ます。これらの属性はOhai によって自動的に入力されます。

を 2 回目に実行するとchef-client、これらのファイルが台無しになります。現在の外観は次のとおりです。

# /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /gems/passenger-3.0.11/ext/apache2/mod_passenger.so

# /etc/apache2/mods-available/passenger.conf
PassengerRoot /gems/passenger-3.0.11
PassengerRuby 
PassengerMaxPoolSize 6

そのためnode[:languages][:ruby]、Chef の実行中にデータが取り込まれていないようです。しかし、サーバー上の IRB セッションから Ohai を直接呼び出すと、正しく表示されます。

$ sudo -Hu root /usr/bin/irb1.9.1
irb(main):001:0> require 'yaml'
irb(main):002:0> require 'chef'
irb(main):003:0> node = YAML::load(`/usr/local/bin/ohai`)
irb(main):004:0> node['languages']['ruby']['ruby_bin']
=> "/usr/bin/ruby1.9.1"
irb(main):005:0> mash = Chef::Mash.new(node)
irb(main):006:0> mash[:languages][:ruby][:ruby_bin]
=> "/usr/bin/ruby1.9.1"

ファイルを修正できますが、次回の Chef 実行時に問題が再発するのを止めることはできません。この問題をさらに適切にトラブルシューティングする方法に少し困惑しています。

他の誰かがこの問題に遭遇しましたか? クックブックまたはロールでこれらの属性を手動で設定しようとしたことはまだありませんが、そうすべきだとは思いません。自動属性はオーバーライドされるべきではありません。

4

1 に答える 1

1

シェフクライアントを再起動するだけでこれを解決したと思いますが、根本的な原因にはまだ悩まされています。

(この問題が発生した時点で)chef-clientデーモンの実行中のインスタンスは、サーバーをknife bootstrap. ブートストラップ テンプレートは ruby​​1.9.1 パッケージをインストールしますが、chef-client デーモンが適切にロードできなかった可能性があります。(私はこれについて曖昧です。)

最初にレシピに追加しようohai "reload"としましたが、次にスケジュールされた Chef の実行時に、構成ファイルはまだ壊れていました。

次に を実行service chef-client restartすると、Chef は問題の構成ファイルを正しく設定しました。次の実行では、それらはまだ正しかった。

だから私はこれがなくなることを望んでいますが、実行中のchef-clientインスタンスがOhaiからの自動属性を正しくリロードできなかった理由にまだ困惑しています. Chef の操作に関する深い知識を持っている人がこれに出くわした場合でも、コメントや戦争の話は歓迎します。

于 2013-01-03T15:16:04.557 に答える