さくらのVPSにchef-serverをインストール
久しぶりのブログ更新!!
サーバを増やすときに各種パケッケージのインストールだけでなく、必要な設定も含めて自動化していきたいと思い、最近はChefを勉強中。
chef-serverをさくらのVPSにインストールしたときの作業をメモしておく。さくらのVPSへのchef-serverインストールについては、id:masa_to さんが、さくらVPSにchef-serverをインストールする - happytanの足跡 で「Manual Chef Server Configuration」に従ってインストールしたものを記述されていますが、とりあえず試してみたい(よくわかってなくて、手を抜きたい)私は「Bootstrap Chef RubyGems Installation」に従ってインストールしてみた。
インストール先は、さくらのVPS 512 の CentOS 5.5 i386。
Ubuntu の場合はドキュメントの通りだったけど、CentOS5.5 の場合は少しだけ違ったので、一応やったことをすべてメモしおく。
Ruby/RubyGemsのインストール
CentOSのデフォルトのrubyは若干古いので、他のYUMレポジトリからインストールする(それでもインストールされるのは 1.8.6*1 だけど、、、)。sudo 環境なんて整えてないから root で実行。
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm # rpm -Uvh http://download.elff.bravenet.com/5/i386/elff-release-5-3.noarch.rpm # yum install ruby ruby-shadow ruby-ri ruby-rdoc gcc gcc-c++ ruby-devel ruby-static
RubyGemsの方はソースからインストール。
# wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz # tar zxf rubygems-1.3.7.tgz # cd rubygems-1.3.7 # ruby setup.rb --no-format-executable
Chef本体
Chef本体は、gem コマンド一発
# gem install chef
chef-soloの設定
chef-server自体は Chef 自身にインストールさせるため、chef-server を必要とせず単独で Chef の実行ができる chef-solo 使う。その chef-solo 向けの設定。
まず
# mkdir /etc/chdef
で、ディレクトリを作って、/etc/chef/solo.rb を以下のように記述。
file_cache_path "/tmp/chef-solo" cookbook_path "/tmp/chef-solo/cookbooks"
で、chef-server と webui もインストールさせるために、インストールのための設定として ~/chef.json を以下のように記述した。
{ "chef": { "server_url": "http://localhost:4000", "webui_enabled": true, "init_style": "init" }, "run_list": [ "recipe[chef::bootstrap_server]" ] }
CentOSなので、init_style を "init" にする必要があるので、これは忘れずに。
chef-serverインストール
インストールは chef-solo コマンドを実行する。
# chef-solo -c /etc/chef/solo.rb -j ~/chef.json -r http://s3.amazonaws.com/chef-solo/bootstrap-latest.tar.gz
実行に成功すれば、「Verify That All Components are Running」の通りにプロセスが動いていればいいのだけど、webui が起動していない。
rackのバージョンが新しすぎるようなので、以下のようにしてバージョンを下げた。
# gem uninstall rack # gem install -v 1.1.0 rack
これで
# /etc/init.d/chef-server-webui restart
を実行して、無事に起動を確認。ブラウザからもアクセスできることを確認(http://[ホスト名]:4040/)。ちなみに、デフォルトのアカウント/パスワードは、admin/p@ssw0rd1。
しかし、CentOS環境では、chef-server, chef-server-webui とも chef ユーザで実行される。このためこのままでは、/etc/chef/valication.pem を読み込むことができず、このあとの Client 登録で失敗する。
Ubuntu 環境では root で実行されていたのでそれにならうことにした。そこで、/etc/sysconfig/chef-server, /etc/sysconfig/chef-server-webui ともに以下のように記述した。
SERVER_USER=root SERVER_GROUP=root
これで、chef-server, chef-server-webui を再起動しておく。
Command Line Clientの登録
Chef では chef-server とやりとりするのに knife コマンドを多様する。これを chef-server に登録する。chef-server 上に適当にユーザを作って、登録した。
入力内容を含めて以下のような実行をした。
# useradd kikumoto # mkdir ~kikumoto/.chef # cp /etc/chef/validation.pem /etc/chef/webui.pem ~kikumoto/.chef # chown -R kikumoto.kikumoto ~kikumoto/.chef # su - kikumoto $ knife configure -i /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.1/lib/restclient/abstract_response.rb:50: warning: parenthesize argument(s) for future version Where should I put the config file? [~/.chef/knife.rb] Please enter the chef server URL: [http://localhost:4000] Please enter a clientname for the new client: [root] admin_kikumoto Please enter the existing admin clientname: [chef-webui] Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem] .chef/webui.pem Please enter the validation clientname: [chef-validator] Please enter the location of the validation key: [/etc/chef/validation.pem] .chef/validation.pem Please enter the path to a chef repository (or leave blank): WARN: Creating initial API user... INFO: Created (or updated) client[admin_kikumoto] WARN: Configuration file written to /home/kikumoto/.chef/knife.rb
登録に成功していれば knife client list を実行したときに、登録した clientname が表示される。
最後に
という感じで、とりあえず chef-server がインストールできて、cookbook にデータを登録する準備まではできた。
この後は、cookbook 作成/登録用のクライアントと、構築対象の Node を登録する。それはまた後日。
ちなみに、chef-cliet サービスが自動起動するようになっているので、このサーバを再起動すると chef-server にこのサーバが1つの Node として登録される。