まっしろけっけ

めもてきなやーつ

chef-client実行時のエラーではまった

既に色々install済みのserverのアプリケーションを入れ替える為に
chef-clientした際に下記のようなエラーが出た。
mysql-hoge, mysql-testのhoge,testの部分は各versionが入ります。

$ sudo chef-client
================================================================================
Error executing action `install` on resource 'package[mysql-client]'
================================================================================
#一部省略
package("mysql-client") do
  option "--enablerepo=hoge-repo"
  version "hoge"
  recipe_name "client"
  action [:install]
  cookbook_name :mysql
  package_name "mysql-client"
end

chef-client.logには下記の様に出ているだけ

$ more /var/log/chef-client.log
Chef::Exceptions::Exec: package[mysql-client] (mysql::client line 17) had an error: Chef::Exceptions::Exec:  returned 1, expected 0

情報が少なすぎるorz
色々ググってみたがわからず
yumで上記のinstallと同じ指定でコマンドを実行してみる

$ sudo yum install --enablerepo=hoge-repo mysql-client-hoge
Transaction Check Error:
  file /etc/my.cnf from install of mysql-hoge conflicts with file from package mysql-test
  file /usr/share/mysql/charsets/Index.xml from install of mysql-hoge conflicts with file from package mysql-test
  file /usr/share/mysql/charsets/cp1250.xml from install of mysql-hoge conflicts with file from package mysql-test  

こんな感じでダラダラとエラーが出た。
既に入っているmysqlがあるからぶつかってますよってことかー
なんか解決方法がわかってきた。
install済みのパッケージを確認してみる

$ yum list installed | grep mysql
mysql-test
mysql-devel-test

確かにmysql-testが既にあった。
一回アンインストールする

$ sudo yum remove mysql

これでもう一回chef-clientを実行する

$ sudo chef-client

今度はImageMagicでも同じエラーが出たので
同じ様にinstall済みか確認してuninstallし、chef-clientを実行

$ yum list installed | grep ImageMagic
ImageMagic-hoge
$ sudo yum remove ImageMagic
$ sudo chef-client

30分くらいはまってしまったがこれでレシピの反映がうまくいった。
今回の事象はそこまで頻発することではないのかもしれないが
こんなこともあるよ程度で覚えておけたら役に立つかも

chef-clientでもう少し詳細なログ出せればうれしいのだが
optionとか追加すれば出るのかな?
あとでちょっと調べておくことにする