masayuki5160's diary

名古屋でWeb系エンジニアしてます。

chef-soloでWeb/PHPサーバ、MySQLとmemcachedサーバのレシピをつくってみた

ここ一ヶ月はずっとchef-soloやってましたが、
こだわりだすときりがないんだな〜ということでいったんこれで仕上げました。
(ちなみにCentOS 5.9の環境でしかテストをしていません。。)


apacheとPHPをセットアップ
https://github.com/masayuki5160/phpServer.git

MySQLをセットアップ
https://github.com/masayuki5160/MySQL.git

memcachedサーバのセットアップ
https://github.com/masayuki5160/memcachedServer.git


chefの紹介をしているサイトをみると、
いろいろ機能を紹介しまくっていて結局どうコードをかいていいかわからないことが多い気がします。。
ぼくもはじめはそうだったのですが、結局やりたいことっていうのは

・yumでインストール
・たまにコンパイルしてインストール
・httpd.confとかカスタマイズしたものもchefで反映させたい

くらい。
そうするとじつは下記memcachedサーバのレシピくらいかければだいたいのレシピはかけるんじゃないかと。。


# yumでもろもろインストール
package "libevent" do
action :install
end

package "libevent-devel" do
action :install
end

# ソースからmemcachedをコンパイルしてインストール
script "install_memcached" do
interpreter "bash"
user "root"
cwd "/tmp"
code <<-EOH
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar xzvf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure
make
make install
EOH
# ここに同じスクリプトを実行しないような設定を追加(chef-solo入門を参照)
end

# memcachedの起動スクリプトを設定
template "/etc/init.d/memcached" do
source "memcached.erb"
end


んでそれぞれ

・yumでインストール ➡ packageほげほげのとこ
・たまにコンパイルしてインストール ➡ scriptほげほげのとこ
・httpd.confとかカスタマイズしたものもchefで反映させたい ➡ templateほげほげのとこ

を使っていけば大丈夫です。

もちろんOSの環境がちがっても動くように設定するといいのはわかるけど、
ひとまずここまででいいんじゃないかと。
必要になったらもっとすんごいレシピにしていけばいいしね。



最初は自動化できることにメリットを感じていましたが、
属人化してしまっているサーバ構築作業を見える化する手段としてもchefがすばらしいんじゃないかと感じはじめました。
読みにくい手順書とかよりよっぽどchefのレシピの方がいいです。
だってまずそれでサーバセットアップできてるんだからまず間違っていることはなさそうだし。


というわけでこれからもchef使っていろいろかいていこうと思います。

入門Chef Solo - Infrastructure as Code