目次

capistrano

資料

ドキュメント

ポイント

インストール

ruby 1.9.1

独自に /usr/local/bin/ruby として入れた ruby 1.9.1p376 の場合。

$ sudo gem install capistrano --no-ri --no-rdoc

こうすると /usr/local/bin/cap ができる。

オプションをつけないと root 権限で $HOME/.ri を作ろうとする。

ruby 1.8

Ubuntu 9.04 に /usr/bin/gem (1.3.1) を独自に入れた環境なので、gem で入れると /usr/bin に入る。

$ which gem
/usr/bin/gem
$ gem -v
1.3.1
$ sudo gem install capistrano
$ which cap
/usr/bin/cap
$ gem list capistrano

*** LOCAL GEMS ***

capistrano (2.5.10)

タスクの書き方

タスクファイルの書き方は rakerakefile に似ている。

ここでは上記サイトを参考に deploy.rb だけを作って試す。

パスワードを与えないとどうなるの?

# deploy.rb
 
# set :application, "hoge" 
# set :user, "hoge"        
# set :password, "hoge"    
 
role :test, "bli"
role :ap, "btv","buf"
 
task :hello, :roles => [:test, :ap] do
  run "echo HelloWorld! $HOSTNAME"
end
 
task :bye, :roles => [:test, :ap] do
  run "echo GoodBye! $HOSTNAME"
end

buf, btv, bli はいずれも現在のユーザで(パスワードを入れれば) ssh できるマシン。

やってみると Password: で自分のパスワードを聞かれて、 それで先に進んだ。

$ cap -f deploy.rb hello
  * executing `hello'
  * executing "echo HelloWorld! $HOSTNAME"
    servers: ["bli", "btv", "buf"]
Password: 
    [buf] executing command
 ** [out :: buf] HelloWorld! buf
    [btv] executing command
 ** [out :: btv] HelloWorld! btv
    [bli] executing command
 ** [out :: bli] HelloWorld! bli
    command finished

role の書き方は下記でもよい。

role(:colours) { ["host1", "host2", "host3"] }

run ではホスト名を特別な変数として参照できる。

run "cd /somewhere; sh do_something.sh $CAPISTRANO:HOST$"