capistranoで、デプロイを効率化する
カテゴリ: Linux
執筆者: fujimi
updated: 2009/04/30
ページビュー(1426)
-
関連キーワード:
- capistrano
- CentOS
- デプロイ
- Ruby
1.1 想定読者
1.1.1 求めていること
- ソースのデプロイの手間を減らすこと
- サーバごとにデプロイを行えること
- デプロイのrollback
1.1.2 前提条件
- linuxのコマンドに慣れている
1.2 マニュアル概要
- デプロイ自動化ツールであるcapistranoの導入方法を示す
1.3 テスト環境
- CentOS5.1(32bitバージョン)
- ruby(1.8.5)
- rubygems-1.2.0
- capistrano(2.4.0)
- 外部のサーバから複数のリモートサーバにsshで接続し一斉に操作できるので、複数のサーバで同時に同じ操作を行うときに楽であり、ミスがない
デプロイの基点となるサーバに、capistranoをインストールする
3.1 rubyをインストールする
# yum -y install ruby
3.2 rubygemsをインストールする
$ wget rubygems-1.2.0.tgz
$ tar xvzf rubygems-1.2.0.tgz
$ cd rubygems-1.2.0
# ruby setup.rb
$ tar xvzf rubygems-1.2.0.tgz
$ cd rubygems-1.2.0
# ruby setup.rb
3.3 capistranoをインストールする
# gem install capistrano
デプロイを行う先のサーバに、ユーザアカウントを作成する。ただし、全てのサーバで同じアカウント名・パスワードとする。
# useradd capistrano
# passwd password
# passwd password
一括で実行したい操作内容をrubyファイルにまとめる
$ vi example.rb
# Definition
set :application, "example"
set :user, "capistrano"
set :password, "password"
# role
role :http_server, "192.168.1.2, 192.168.1.3"
role :ftp_server, "192.168.1.4, 192.168.1.5"
# task
task :update_http, :roles => [:http_server] do
run "echo hello $HOSTNAME"
end
# task
task :httphello, :roles => [:http_server] do ←タスク名と実行を行うロールの設定
run "echo hello $HOSTNAME" ←リモートサーバに行うコマンド
end
set :application, "example"
set :user, "capistrano"
set :password, "password"
# role
role :http_server, "192.168.1.2, 192.168.1.3"
role :ftp_server, "192.168.1.4, 192.168.1.5"
# task
task :update_http, :roles => [:http_server] do
run "echo hello $HOSTNAME"
end
# task
task :httphello, :roles => [:http_server] do ←タスク名と実行を行うロールの設定
run "echo hello $HOSTNAME" ←リモートサーバに行うコマンド
end
実行を行うロールを設定しなければ、すべてのサーバで実行されてしまう。
- set:変数を定義する
- role:同じ処理を行うサーバグループを作成する。複数設定可能で、ホスト名での指定も可能。
- task:処理内容を記述する
デフォルトで、./config/deploy.rbを読みこむ。ただし、-fオプションをつけて、任意のファイルを読み込ませることもできる。
$ /usr/bin/cap -f /home/capistrano/example.rb update_http
ニックネーム:fujiyama
自己紹介:
都内大学4年生です。 プログラミングとサーバ関係のレシピを書いてます。
都内大学4年生です。 プログラミングとサーバ関係のレシピを書いてます。



