はじめに
過去の仕事でサーバーを1000台以上管理する仕事をしていて大変だったときに、chefというサーバー構成管理ツールを知りました。結局その仕事をしていた会社は辞めてしまったのですが、今の仕事でもサーバーの管理の必要が少なからずあるため、楽をするためにまずは使い方を覚えようと思い、自宅のPCに仮想マシンでLinuxを動かして試してみています。その時に参考にしたサイトをまとめます。
サイト一覧
実験用の環境の構築
上記のサイトを参考にしつつ、自分のPCにchef-serverとnodeの仮想マシンを作ってみました。
構成は下記のようにした。
・管理作業用PC:Mac (192.168.11.10/24)
・chef-server:debian6 (192.168.11.25/24)
・node:Scientific Linux 6.2 (192.168.11.26/24)
chef-serverがdebianなのは、パッケージが用意されていてインストールが楽だから。
nodeがSL6.2なのは、仕事で使っているサーバーがSLだから。
構築手順
※各マシンの日付が大きくずれていると、nodeからサーバーにアクセス出来ない。
ntpなどでちゃんと合わせておこう。
このサイトの手順通りに、debianにchef-serverを入れる。
また、Macにはknifeを使えるように設定。
続いてnodeとなるSL6.2の設定。
Scientifix Linux6.2をインストール。(GUIなしのバージョン)
rvmで一般ユーザー権限で入れたrubyだと、パーミッションとかで何かとあれなので
OSのパッケージのrubyとrubygems入れる。
chef-clientを、root権限で実行させる。
※もしサーバーに入れてあるアプリの関係で他のバージョンのrubyが必要な場合は
そちらをrvmで入れたrubyで動かす。
$ su -
# yum install ruby rubygems
# yum install ruby-devel
# gem install chef --no-rdoc --no-ri
# cd chef
# scp root@192.168.11.25:./chef/validation.pem ./
レシピの作成とnodeへの反映
Macで作業
% knife cookbook create cron_sample -o cookbooks
% vi cookbooks/recipe/default.rb
cron "user_c" do
minute "30"
user "masaya"
command "/bin/true"
path "/home/masaya/bin"
end
cron "root_c" do
user "root"
command "/bin/ls"
hour "4"
minute "11"
end
% knife cookbook upload cron_sample -o cookbooks
% knife node run_list add sl001 cron_sample
SL6.2で作業
rootでログインして、chef-clientを動かしてレシピを反映させる。
# chef-client
crontabの確認
# crontab -l
# Chef Name: root_c
11 4 * * * /bin/ls
もう一つのユーザーになって確認してみる。
# su - masaya
# crontab -l
# Chef Name: user_c
PATH=/home/masaya/bin
30 * * * * /bin/true