Rubyでサーバ設定を自動化! Chef Soloを試そう!第2回

前回は、chef-soloを使ってapache(httpd)をインストールしましたが、CentOSなどRedHat系では、サービス登録がされないので起動の設定をする必要があります。

chef/cookbooks/main/recipes/default.rb に下記の追加を行います。

service :httpd do
  action [:enable, :start]
end

これで、サービス登録がされ、httpdが起動されます。

ところで、いちいちサーバーにログインしてファイルを編集するのは面倒ですし、複数のサーバーに同じ設定をしようとするとさらに大変です。そこで、rsyncを利用してファイルを同期させる事にしましょう。

まず、サーバーにsshdをインストールし、root でリモートログインできるようにしておきます。

sshでリモートログインできるようになったら、scpを使ってサーバー上のchef関連のファイルをローカルクライアントにコピーしましょう。ここではサーバーのIPアドレスを192.168.1.1と仮定します。

client$ scp root@192.168.1.1:/var/chef .

パスワードが要求されるので入力します。サーバー上のchefディレクトリがカレントディレクトリにコピーされます。今後はクライアント側のファイルを編集した後、下記の通りrsyncコマンドでサーバーに同期させます。

client$ rsync -r . root@192.168.1.1:/var/chef

こちらもパスワード入力が求められます。ファイル同期が終わったら、後は下記のコマンドでサーバー上でchef-soloを実行します。

client$ ssh root@192.168.1.1 "chef-solo -c /var/chef/solo.rb"

言い忘れましたが、上記はクライアントがLinuxまたはMac OS Xの場合です。Windowsの場合には下記の記事などを参考にすれば良いかと思います。(すいません。ためしてません)

Windowsユーザもrsyncでファイルをアップしよう