CentOS 6.5でChefからSensuをインストールしようとするとRabbitMQでコケる回避策
date : 2014/01/05
OS : CentOS 6.5
Sensu : sensu-0.12.3-1.x86_64
sensu-chef : 0.8.0
=== (2014/01/06)追記 =======================
@kenjiskywalker CentOS 6.4 → 6.5 にしたら出なくなった・・・うーむ
— Naoya Ito (@naoya_ito) January 6, 2014
ドラクエ氏によると、この解決策だと6.4は別のエラーがでるとのこと。
— Naoya Ito (@naoya_ito) January 5, 2014
@kenjiskywalker CentOS 6.4 の openssl のビルド設定が変わってて Erlang が crypto モジュールを読むところで落ちるです
— Naoya Ito (@naoya_ito) January 5, 2014
@naoya_ito まさにこれですw どうにかできないかやってみます
— kenjiskywalker (@kenjiskywalker) January 5, 2014
@kenjiskywalker うまくいったら教えてくださいw
— Naoya Ito (@naoya_ito) January 5, 2014
@voluntas ありがとうございます。R16B02-0.1でいけるならerlang-solutionsでyumインストール時にバージョン指定すれば回避できるのかなと思ってChefでどうやるのか調べております
— kenjiskywalker (@kenjiskywalker) January 5, 2014
という感じでうまくいかなかったのでBKっぽいけど取り敢えず回避策を
https://github.com/sensu/sensu-chef
このSensuのリポジトリはopscodeに上がっているので
knifeで取ってきます。他にも必要なrecipeを合わせて持ってこれるので便利です。
knife cookbook site vendor sensu -o cookbooks/
関係するrecipeがダウンロードされたことを確認してください。
次にREADMEに書いてあるようにSSL証明書を作成します。
cd ./cookbooks/sensu/examples/ssl/ ./ssl_certs.sh generate knife data bag create sensu knife data bag from file sensu ssl.json
などとSSLを作成しますが knifeが上手く動かない場合は
mkdir ./data_bags/sensu cp ./cookbooks/sensu/examples/ssl/ssl.json data_bags/sensu/
とすることで同じ結果を得られます。
次にrun_list
を作成します。
{ "default_attributes": { }, "override_attributes": { }, "run_list": [ "sensu", "sensu::redis", "sensu::rabbitmq" ] }
この状態でChefを廻します。
Recipe: rabbitmq::default * service[rabbitmq-server] action restart ================================================================================ Error executing action `restart` on resource 'service[rabbitmq-server]' ================================================================================ Mixlib::ShellOut::ShellCommandFailed ------------------------------------ Expected process to exit with [0], but received '1' ---- Begin output of /sbin/service rabbitmq-server start ---- STDOUT: Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_{log, _err} rabbitmq-server. STDERR: ---- End output of /sbin/service rabbitmq-server start ---- Ran /sbin/service rabbitmq-server start returned 1 Resource Declaration: --------------------- # In /root/chef-solo/cookbooks-3/rabbitmq/recipes/default.rb 106: service node['rabbitmq']['service_name'] do 107: action [:enable, :start] 108: end 109: Compiled Resource: ------------------ # Declared in /root/chef-solo/cookbooks-3/rabbitmq/recipes/default.rb:106:in `from_file' service("rabbitmq-server") do action [:enable, :start] updated true supports {:restart=>false, :reload=>false, :status=>true} retries 0 retry_delay 2 service_name "rabbitmq-server" enabled true running true pattern "rabbitmq-server" startup_type :automatic cookbook_name :rabbitmq recipe_name "default" end
と、このようにエラーになります。
diff --git cookbooks/erlang/recipes/package.rb cookbooks/erlang/recipes/package.rb index 19f9fce..6cec68f 100644 --- cookbooks/erlang/recipes/package.rb --- cookbooks/erlang/recipes/package.rb @@ -43,5 +43,9 @@ when 'rhel' include_recipe 'yum-erlang_solutions' end - package 'erlang' + execute "yum install -y erlang-R16B02" do + user "root" + command "yum install -y erlang-R16B02" + not_if { File.exists? "/usr/bin/erl" } + end end
上記のようにバージョンを含めたパッケージの指定をすることで回避できました。
package 'erlang' do version "R16B02" end
この方法でイケるかと思ったのですがそんなバージョンはない。とエラーになりました。
以上、取り敢えずの回避策としてご利用下さい。