実装
インストールほやほやの Debian に Chef を
apt のソースリストに Opscode のリポジトリを追加する
# echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | tee /etc/apt/sources.list.d/opscode.list
鍵の登録
# mkdir -p /etc/apt/trusted.qpg.d # gpg --keyserver keys.gnupg.net --recv-keys 83EF826A # gpg --export packages@opscode.com | tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null
パッケージをアップデート
# apt-get update # apt-get install opscode-keyring
お待ちかね chef のインストール
$ sudo apt-get install chef
インストール中に Chef Server の URL を入力するステップがあるが、とりあえず何も入力しない。
chef-solo 用のユーザーを作成する
# mkdir /home/chef # useradd chef # usermod -d /home/chef chef # chown chef:chef /home/chef
chef ユーザー作成は任意。
そもそも git すら入っていないので git をインストール
# apt-get install git
ようやく chef リポジトリを取得
# su - chef $ cd ~ $ git clone git://github.com/opscode/chef-repo.git $ cd chef-repo $ mkdir .chef $ mkdir ~/tmp
chef-solo 実行時の cookbook 等を設定する
$ cd ~ $ vim .chef/solo.rb
以下のように記載する。
file_cache_path "/home/chef/tmp/chef-solo" cookbook_path "/home/chef/chef-repo/cookbooks"
JSON で適用するレシピを設定する
$ cd ~ $ vim .chef/chef.json
以下のように記載する。
{ "run_list": [ "recipe[packages_install]" ] }
cookbook を作るにあたって rake すら入っていないのでインストールする
# apt-get install rake
あらためて cookbook を作る
# su - chef $ cd ~/chef-repo $ rake new_cookbook COOKBOOK=packages_install
レシピを作成する
$ cd ~/chef-repo $ vim cookbooks/packages_install/recipes/default.rb
インストールするパッケージに応じてレシピを記載する。
とりあえず sudo と vim と tmux と apache をインストールするレシピ
%w{sudo vim tmux apache2}.each do |package_name| package package_name do action :install end end
chef-solo がサービスとして起動しているので停止する
/etc/init.d/chef-client stop
chef-solo がサーバー起動時に起動しないようにする
ls -l /etc/rc*/*chef-client update-rc.d -f chef-client remove
Let's Cooking...
chef-solo の実行
chef-solo -c /home/chef/chef-repo/.chef/solo.rb -j /home/chef/chef-repo/.chef/chef.json
まとめ
- Debian のインストールは初めてに近かったけど特に問題無かった
- 一台なら別に chef は不要かな...chef を使い始めるまでの間で必要なパッケージはインストール完了するし
- 醍醐味は二台になった時から、cookbook を Subversion や git 等で管理しておけば OS のインストールから自動化、構成の管理が可能
- 未だに chef-solo だけど、現状、chef-solo でも十分
- 次は knife を試す