ユーザ用ツール

サイト用ツール


capistrano

capistrano

資料

ドキュメント

ポイント

  • Capistranoは1台にインストールされていれば良い
  • 並列処理 するサーバのユーザ、パスワードは同じにする
  • run の代わりに sudo というアクションも使えるらしい

インストール

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 に似ている。

  • capfile という名前のファイルがデフォルトらしい。
  • capify というコマンドで Rails プロジェクトからタスクファイルを作ってくれるらしい。
  • Rails を前提とした多くのタスクがデフォルトで定義されているらしい。

ここでは上記サイトを参考に 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$" 
capistrano.txt · 最終更新: 2010/08/19 08:08 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki