ようへいの日々精進XP

よかろうもん

初 Debian に chef-solo で環境構築の一部始終

要件

  • Debian も勉強しておきたい
  • Debian は初めてです...
  • 環境構築は Chef でやってみる

実装

Debian のインストールは名刺型 CD のイメージでインストール

  • 容量は非常に小さく 50MB 程度

f:id:inokara:20130224031426p:plain

anaconda 以外のインストーラーは久しぶり...

  • 特に困る事無くインストールは環境、ssh は使えるようにしておく
  • ただ、最小限のパッケージのみ...

f:id:inokara:20130224031448p:plain

インストールほやほやの 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 を試す