Capistrano3を試してみる
Capistrano3を試してみる。
※MacにRubyやVagrantはインストールされた状態。
インストール
とりあえずMacにCapistranoをインストールする。
$ gem install capistrano
$ cap -V Capistrano Version: 3.2.1 (Rake Version: 10.1.0)
サーバを2台用意
VagrantでDBサーバを2台用意する。
$ mkdir server1 $ cd server1 $ vagrant init centos65 $ vi Vagrantfile config.vm.network "private_network", ip: "192.168.33.11" $ vagrant up
sshで接続できるか確認しておく。
$ ssh vagrant@192.168.33.11
こんな感じでserver2(192.168.33.12)も用意する。
vagrantのboxは下記のコマンドで追加済み。 $ vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
セットアップ
適当な場所に適当にディレクトリを用意し、cap installする。
$ mkdir sample $ cd sample
$ cap install
下記のファイルが生成される。
$ tree . ├── Capfile ├── config │ ├── deploy │ │ ├── production.rb │ │ └── staging.rb │ └── deploy.rb └── lib └── capistrano └── tasks
Hello, world!を表示してみる
production.rb,staging.rbは使わず、今回はdevelpment.rbを作成する。
$ vi config/deploy/development.rb
role :web, %w{192.168.33.11 192.168.33.12}↲ server '192.168.33.11', user: 'vagrant', roles: %w{web}, ssh_options: { password: 'vagrant' } server '192.168.33.12', user: 'vagrant', roles: %w{web}, ssh_options: { password: 'vagrant' }
deploy.rbに下記のタスクを追加する。
$ vi config/deploy.rb
・・・ namespace :test do desc 'Hello, world!' task :hello do on roles(:web) do execute "echo Hello, world!" end end end
実行すると、各サーバーでHello, world!がechoされる。
$ cap development test:hello INFO[dea8d320] Running /usr/bin/env echo Hello, world! on 192.168.33.12 INFO[bc01e84a] Running /usr/bin/env echo Hello, world! on 192.168.33.11 DEBUG[dea8d320] Command: echo Hello, world! DEBUG[bc01e84a] Command: echo Hello, world! DEBUG[dea8d320] Hello, world! INFO[dea8d320] Finished in 0.098 seconds with exit status 0 (successful). DEBUG[bc01e84a] Hello, world! INFO[bc01e84a] Finished in 0.104 seconds with exit status 0 (successful).
デプロイしてみる
index.htmlだけあるリポジトリをデプロイしてみる。
下記のような感じでdeploy.rbを修正する。
$ vi config/deploy.rb
・・・ set :repo_url, 'https://github.com/・・・/sample.git' ・・・ set :deploy_to, '/home/vagrant/my_app'
デプロイできるかとりえあえずチェックする。
$ cap development deploy:check
エラーが出なければデプロイする。
$ cap development deploy
下記のような感じでデプロイされる。
$ cd server1 $ vagrant ssh centos$ tree . `-- my_app |-- current -> /home/vagrant/my_app/releases/20140813073813 |-- releases | `-- 20140813073813 | |-- REVISION | `-- index.html |-- repo | ・・・ |-- revisions.log `-- shared
再度デプロイすると、
$ cap development deploy
releasesが増えてcurrentがそっち向いているのが確認できる。
centos$ tree . `-- my_app |-- current -> /home/vagrant/my_app/releases/20140813075752 |-- releases | |-- 20140813073813 | | |-- REVISION | | `-- index.html | `-- 20140813075752 | |-- REVISION | `-- index.html |-- repo | ・・・ |-- revisions.log `-- shared