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)
タスクの書き方
タスクファイルの書き方は rake の rakefile に似ている。
- 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 (外部編集)