Capistrano を使って複数サーバーのコントロール

Capistrano を使うことで、複数のサーバーで任意のコマンドを同時に
実行できるらしいので、さっそく実験
さすがに複数マシンを用意するのは現実的ではないので、
VMware Player でクライアントとサーバーのマシンを作成
使っているマシンは ubuntu にしてみました
ただし、注意点として
クライアント、サーバーともに
共通のユーザをつくってパスワードも同じじゃないとダメらしいです
ちなみに、操作性をあげるため、VMware Tools をインストール
しています
Virtual Machine > Install VMware Tools
の後に
cd /tmp
tar zxvf /media/VMware\ Tools/VMwareTools-8.8.1-528969.tar.gz
cd vmware-tools-distrib/
sudo ./vmware-install.pl
の後に再起動すれば反映されます
まずはクライアント側で
sudo apt-get install ruby1.8
sudo apt-get install rubygems1.8
で ruby と gems をインストール
sudo gem install capistrano
で capistrano をインストールします
次に
echo “export PATH=/var/lib/gems/1.8/bin:\$PATH” >> ~/.bashrc
でライブラリ参照パスを設定
source .bashrc
で設定を反映
ssh-keygen -t rsa
で公開鍵ファイルを作成
パスフレーズを聞かれるけど、ひたすらEnter でパスフレーズなしのものを作成
ここまでがクライアントの設定
今度はサーバー設定
sudo apt-get install ssh
でssh サーバーをインストール
ついでに ifconfig でIPアドレスを確認しておきます
192.168.10.114
次に、クライアントで scp を使って鍵のコピー
scp .ssh/id_rsa.pub snowpool@192.168.10.114:~
でコピー
文法としては、
scp ファイルの置き場のパス ユーザ名@IPアドレス:コピー先のパス
となります
またサーバに戻って設定をします
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
で認証済みの鍵として登録
chmod 600 ~/.ssh/authorized_keys
でパーミッション変更
ここまで完了したら、次に
またクライアント ubuntu に戻ります
vimcapfile でファイルを新規作成
日経 Linux 2011-12 についているDVDにスクリプト内容が記述されているので
これを使いました
ただし、注意点として ubuntu 11.10 の場合エラーになります
そのまま
cap addJava_home
を実行しても
Invalid gemspec in [/var/lib/gems/1.8/specifications/capistrano-2.9.0.gemspec]: invalid date format in specification: “2011-09-24 00:00:00.000000000Z”
/usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:926:in `report_activate_error’: Could not find RubyGem capistrano (>= 0) (Gem::LoadError)
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:244:in `activate_dep’
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:236:in `activate’
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:1307:in `gem’
from /usr/local/bin/cap:18
というようにエラーになります
原因は
[tips]gemのインストール時に invalid date format in specification でエラー
に載っているように
日付のフォーマットの記述がおかしくなっているためでした
sudo vim /var/lib/gems/1.8/specifications/capistrano-2.9.0.gemspec
でファイルを開き
s.date = %q{2011-09-24 00:00:00.000000000Z}

s.date = %q{2011-09-24}
へ修正
これで、無事に実行することができます
まだ、構文などの詳しいところは勉強中です