chefをつかってみる ~インストール編~

最近社内でもっぱらサーバ設定がらみの障害が出ており、構成もマシンごとに異なっていてちゃんと管理されておらず、これは自動構成管理ツールを導入しなきゃいけないなと感じたので、軽くchefについて調べてみました。

chef(シェフ)とは

ruby製のサーバ構成管理ツール
・ソフトウェアのインストール状況や設定ファイルを定義した状態に収束させる(冪等性)
・類似ソフトとして"Puppet"がある
・クライアント-サーバ型の構成(クライアント:管理されるコンピュータ)
・2つの動作モードがある。
  chef-server ⇒ 上記で示したクライアント-サーバ型の構成動作モード
  chef-solo ⇒ 単体でChefを動作させるモード

参考
http://jp.rubyist.net/magazine/?0035-ChefInDECOLOG#l8

chefマシンを作ってしまえば自動&遠隔でサーバ構築ができる、構築スクリプト(ruby&jsonで記述)をコードとして管理できるという部分が魅力的だと思います。

早速いれてみる

chefの動きを体験するだけならchef-soloで十分みたいなので、今回はchef-solo導入用です。
(chef-severは構築で軽く死ねるらしいので...)
VMWarePlayerでUbuntu13.0.4を動かして、そこにインストールしてみました。
chefを動作させるのにrubyも必要なので、まずそこから構築を...
※rbenvでrubyを入れるので、rvmを使っていれば先に削除してください。

①rbenvでrubyをインストール

# rubyに必要な開発パッケージ
# sqliteはrailsに必要なやつだけどついでに
sudo apt-get install curl g++
sudo apt-get install zlib1g-dev libssl-dev libreadline-dev
sudo apt-get install libyaml-dev libxml2-dev libxslt-dev
sudo apt-get install sqlite3 libsqlite3-dev

# gitをインストール
sudo apt-get install git

# githubからrbenv、ruby-buildを取得してインストール
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
git clone git://github.com/sstephenson/ruby-build.git ~/plugins/ruby-build
mv ~/plugins ~/.rbenv
cd ~/.rbenv/plugins/ruby-build
sudo ./install.sh

# rbenvをPATHに
# ついでにsudoをユーザのPATHで実行できるようにする
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
echo 'alias sudo="sudo env PATH=$PATH"' >> ~/.bashrc
source ~/.bashrc

# インストールできるruby一覧
rbenv install -l
# rubyをインストール
rbenv install 1.9.3-p429
rbenv rehash
rbenv global 1.9.3-p429
ruby -v

# 便利gem
# 今回はchefに触れるだけなのでbundlerは入れない
gem install rbenv-rehash
rbenv rehash

②chefをインストール

# chefをインストール
gem install chef
# knifeの初期化(knifeはchefリポジトリを操作するツール)
# 質問は全てデフォルト(入力せずにエンター)
knife configure

はい、見てのとおりほとんどrubyのインストール手順になりました。
まぁchefがgemで提供されている以上、しょうがないと思いますが。
(パッケージ版のchefもあるようで、chef-severはそちらのほうが楽だとか。。)

ちなみに上記手順を実行した結果、現時点(2013/05/29)では下記のバージョンのchefがインストールされました。
chef (11.4.4)

実行編では上記のバージョンを前提にします。

また、下記の書籍が大変参考になったので、興味のある方は是非。