Chef clientとWindows向け便利コマンドのインストールをする
Chef、流行っていますね。僕も最近の流れを受けて始めたばかりのにわかChef使いなのですが、例によってWindowsでChefを動かすのは結構大変です。
今回はChef clientのインストールをするとともに、Chefを開発しているopscodeの提供しているrecipeを使ってWindows向けの便利なコードを使えるようにしたいと思います。
#なお、gemを使ってインストールする方法もありますが、今回はインストーラー(msi)を使います。
Chef clientのインストール
0. gitがインストールされていない場合はmsgitなどを使ってインストールしておいてください。
1. こちらのページのStep2にあるリンクからChefのインストーラーをダウンロードし、実行してください。
インストール後にコンソールでchef-soloなどのバージョンが表示されればOKです。
> chef-solo --version Chef: 0.10.8
2. 続いてChefのrecipeなどを管理するリポジトリを作ります。opscodeがリポジトリの雛形を公開していますので
それをクローンして使います。
> C: > cd \ > git clone git://github.com/opscode/chef-repo.git
cloneで作られたchef-repoというディレクトリがchefのリポジトリになります。opscodeのドキュメントでは
このディレクトリをバージョン管理することが推奨されています。
3. chefの設定ファイルとその管理用ディレクトリを作ります。
> mkdir chef-repo\.chef > cd chef-repo\.chef > echo >> solo.rb > notepad.exe solo.rb
solo.rbにはchef-solo用の設定を書きます。
最低限必要なのはcookbookの場所とcacheの場所です。今回は以下のようにしました。
solo.rb
file_cache_path "C://opscode/chef/cache/chef-solo" cookbook_path "C://chef-repo/cookbooks"
これで一通りのインストールは完了です。
Windows向けの便利コードを使えるようにする
このままでもChefを利用することはできますが、Windowsはパッケージマネージャーがありません。
zipとかmsiとか、どうやって操作すりゃいいのよ…。とお悩みの方はopscodeが公開しているこちらのrecipeを使うと便利です。
1. こちらのrecipeをzip等でダウンロードし、C:\\chef-repo\cookbooksの下に配置します。
2. このrecipeを実行するように設定します。
> cd chef-repo/.chef > echo >> win_default.json > notepad.exe win_default.json
win_default.json
{ "run_list": ["recipe[windows]"] }
3. recipeを実行します。
> cd ../ > chef-solo -c .chef/solo.rb -j .chef/win_default.json
4. 失敗しましたか?失敗しなかった人はめでたしめでたしですが、僕はものの見事に失敗しました。
registry.rbでエラー、みたいな。どうもコードを見てみると51行目あたりで retry を使っている部分がおかしいようです。
詳しくは「ruby 1.9.2 retry」でぐぐってください。
とりあえずエラーがなければloopを回せばいい(っぽい)ので適当に書き換えました。
registry.rb(line: 46~)
begin registry_update(:open) rescue Exception registry_update(:create) end redo #retry # start count loop over
5. 再度recipeを実行すると無事にインストールが完了します。次回はインストールしたコマンドを使ってWindowsに
ソフトウェアをインストールしてみます。