Chefを呼んでknifeを持たせるまでの話

丸一日かかってChefインストールした。
英語読めないからオフィシャルだけだと時間かかった。

環境

インストール手順

最初は母艦のUbuntu 11.10でパッケージでサクっと入れて
OSインストールまでやってみようと思ったのはいつだったか。
結局インストールするまでに途方もない時間を使ってしまった。

Installing Chef Server on Debian or Ubuntu using Packages
うちはこの手順でUbuntu 11.10にパッケージインストールすると
chef-solrが起動しなくて、もちろんchef-serverも起動しなかった。
java周りとか見てたんだけど時間がもったいないので止めた。

Installation via Bootstrap

手順のベースはこれ。

Install Chef-Solo

いきなり別ページに飛ばされるんだけど、取り敢えず単体で動く
Soloを入れてからということで

Installing Chef Client and Chef Soloへ。

うちはCentOSの5系だったので


$ sudo yum install wget
$ sudo wget -O /etc/yum.repos.d/aegisco.repo http://rpm.aegisco.com/aegisco/el5/aegisco.repo
$ sudo rpm -Uvh http://rbel.frameos.org/rbel5
$ sudo yum install ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode

で、システムのRubyとしてインストールした。
rvmで管理しようとしたんだけどうまくいかなかった。
このうまくいかなかった原因はyumがブチ壊れていたせいもあるので
rvm形式でも多分いける。

必要なソフトウェアをインストール


$ sudo yum install couchdb erlang libxml2-devel zlib-devel
$ sudo yum install --enablerepo=eple rabbitmq-server
$ sudo /etc/init.d/couchdb start
$ curl http://localhost:5984/
$ sudo /etc/init.d/rabbitmq-server start

参考
さくらVPSにchef-serverをインストールする


$ cd /tmp
$ curl -O http://production.cf.rubygems.org/rubygems/rubygems-1.8.10.tgz
$ tar zxf rubygems-1.8.10.tgz
$ cd rubygems-1.8.10
$ sudo ruby setup.rb --no-format-executable

ここもrvm形式のものでもいけるはず。


$ sudo gem install chef --no-ri --no-rdoc

これでsoloが入る。


$ sudo chef-solo -v

で、念のため動くか確認。
なんかその後ごにょごにょ書いてあるけど取り敢えずserverを動かしたいのでパス。

Installation via Bootstrap

のページまで戻る。
いわれるがままに下準備。


$ sudo mkdir /etc/chef
$ vi /etc/chef/solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path "/tmp/chef-solo/cookbooks"

この/tmp/chef-solo/はつくったっけかなー。
エラーが出たらつくってあげてください。

書いてある通りに Init で記述。設定ファイルがJSONとか変なのって思った。


$ vi ~/chef.json
{
"chef_server": {
"server_url": "http://localhost:4000",
"init_style": "init"
},
"run_list": [ "recipe[chef-server::rubygems-install]" ]
}

で、このままSolo叩くと間違いなくg++のバージョンが低い(4.2以上にしろ)ってエラーが出るので


$ sudo yum install g++44
$ export CXX=g++44

ってg++のバージョンを4.4.4に向けた。
んで、gecode使ってC++からRubyに変えてるみたいなので


$ sudo yum install gecode gecode-devel

してgecode入れた。develはいらなかったかも。


$ sudo chef-solo -c /etc/chef/solo.rb -j ~/chef.json -r http://s3.amazonaws.com/chef-solo/bootstrap-latest.tar.gz

で、ゴリゴリやって、Core i5SSDで15分ぐらいかな。かかった。
(お酒飲みだしたのであんまり覚えてない。赤兎馬おいしいです(^q^))

問題なければ色々と動いているはず。
この時の喜びようはちょっと言い表せられないですね。勝手に躓いてただけですけど・・・

で、料理をするにはナイフが必要ですねってことでknifeを使えるようにするんだけど
オフィシャルでいきなり


$ sudo cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef

とか書いてあるけどそんな鍵ファイルできてない。意味がわかりません。
いやいやできるだろこのクソ素人が。ということでしたら教えてください。

ということで鍵つくった。


$ openssl genrsa -des 1024 > /etc/chef/validation.pem
$ openssl rsa -in /etc/chef/validation.pem -out /etc/chef/validation.pem


$ mkdir -p ~/.chef
$ sudo cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef

chown ~/.chefしてるのなんでだろ。って思ってよくわからないから打たないでおこうと思って
今日まで特に問題なく動いてる。


$ knife configure -i

で色々これですかいいですかつくりますよ鍵これですかいいですか
って色々聞いてくるので、後でなおせるのではいはいはいはいいいですいいですいいですいいです。
ってやっていけばいいと思う。


$ knife client list

とかでクライアントが出てくれば動いてる。
はー、ここまで何時間かかったやら。

cookbookつくったりrecipeつくってOSインストールするまではもうちょっとかかりそう。。
nodeとclientの違いもいまいち理解してない。

今後のさんこうに