OSXからCentOS6.5へknife soloした時に発生したエラーと対処

インフラ技術

随分前に少し使って放置していたChef実行環境(knife solo)を改めて使ってみた際のエラー記録です。

  • Client環境 (knife solo): OSX
  • Server環境: CentOS 6.5(ほぼ初期状態)

最初の目標は以下の2つの実行完了です。recipeはユーザを作成する程度の簡単なものにしました。

  1. knife solo prepare — 接続先情報の初期化
  2. knife solo cook — recipeの実行

Chef関連はさすがに環境変化が激しく、Web検索で見つかる情報はどれも古く感じてしまうのが辛いところです。正常パターンは追々メモすることとして、本記事ではハマったエラーを記録します。

関門1: Cookbook not found

knife solo cook を実行したところ、CookbookのPATHが通っていないエラーが発生しました。

[2014-10-27T21:35:08+09:00] ERROR: Cookbook users not found.
If you're loading users from another cookbook, make sure you configure the dependency in your metadata

対処

.chef/knife.rb にcookbook_pathの記載がありませんでした。昔作った設定ファイルの表現が古くなっていたようです。

cookbook_path    ["cookbooks", "site-cookbooks"]

既存の .chef を削除して knife solo init . を実行すると新しい設定が生成されます。

関門2: metadata.rb内のlong_descriptionが邪魔する

[2014-10-27T21:42:08+09:00] ERROR: No such file or directory -
/home/****/chef-solo/cookbooks-3/ssh/README.md

対処

knifeコマンドでrecipeを作成すると自動生成される metadata.rb に以下の記述があります。

long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))

小規模な利用で不要なファイルを削除してしまったため、README.mdが存在せずエラーになっていました。long_description の行をごっそり削除して解決です。

関門3: SSL検証のWarning

SSL validation of HTTPS requests is disabled.
HTTPS connections are still encrypted, but chef is not able to detect
forged replies or man in the middle attacks.

対処

推奨されている通り、.chef/knife.rb に以下を追加します。

ssl_verify_mode :verify_peer

そして成功へ

3つの関門を越えて、なんとか実行完了しました。黒いターミナルの上に輝く緑の文字が嬉しい。

Related Posts