2012年7月9日月曜日

岡山Ruby会議01を開催しました

岡山Ruby会議01

2012/7/7(土)に、岡山Ruby会議01を開催し、スタッフとして参加しました。
会の詳細は次号のるびま(39号)の載せる予定で、スタッフで執筆中ですのでお待ちください。

また、今回は2つ発表をさせて頂いたので、資料を公開しておきます。

るびまの紹介


Rubyでサーバー管理を楽に


2012年7月5日木曜日

chefを使ってみた 試行錯誤のまとめ

はじめに

過去の仕事でサーバーを1000台以上管理する仕事をしていて大変だったときに、chefというサーバー構成管理ツールを知りました。結局その仕事をしていた会社は辞めてしまったのですが、今の仕事でもサーバーの管理の必要が少なからずあるため、楽をするためにまずは使い方を覚えようと思い、自宅のPCに仮想マシンでLinuxを動かして試してみています。その時に参考にしたサイトをまとめます。

サイト一覧


Chefで始めるシステム構成管理入門 その2 – インストールと初期設定
chef-serverのインストールと管理作業PCへの管理ツールのセットアップ

http://www.creationline.com/lab/1742
node側の設定、設定したレシピが反映されるまで


実験用の環境の構築

上記のサイトを参考にしつつ、自分の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 /etc
# mkdir chef
# cd chef
# scp root@192.168.11.25:./chef/validation.pem ./
# vi /etc/chef/client.rb
  chef_server_url 'http://192.168.11.25:4000'
  node_name       'sl001'

レシピの作成と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