またまたCapistrano

前に散々capistranoで悩んでから,はや4年.
Solaris9+Capistranoはダメだった - なぜか数学者にはワイン好きが多い

またまた,使います.

gemでFreeBSDにサクッとインストールしてみます.


ドキュメントでは

Installation

Add this line to your application's Gemfile:

gem 'capistrano', '~> 3.2.0'

And then execute:

$ bundle install

とbundlerでバージョン3.2.0以上を入れるようになっていますが,gem searchしても指定バージョンが入るようなので,gemで入れてみます.

$ gem search ^capistrano$

*** REMOTE GEMS ***

capistrano (3.2.1)

$ sudo su
$ gem install capistrano --no-doc --no-ri
Fetching: net-ssh-2.9.1.gem (100%)
Successfully installed net-ssh-2.9.1
Fetching: colorize-0.7.3.gem (100%)
Successfully installed colorize-0.7.3
Fetching: sshkit-1.5.1.gem (100%)
Successfully installed sshkit-1.5.1
Fetching: capistrano-3.2.1.gem (100%)
Capistrano 3.1 has some breaking changes, like `deploy:restart` callback should be added manually to your deploy.rb. Please, check the CHANGELOG: http://goo.gl/SxB0lr

If you're upgrading Capistrano from 2.x, we recommend to read the upgrade guide: http://goo.gl/4536kB
Successfully installed capistrano-3.2.1
Done installing documentation for net-ssh, colorize, sshkit, capistrano (0 sec).
4 gems installed

なんかメッセージが最期に出ました.
バージョンが上がってずいぶん変わったよって言っているみたいなので,深く気にしないでおきます.
入ったみたいです.

$ cap --version
Capistrano Version: 3.2.1 (Rake Version: 10.1.0)

サーバ監視スクリプトという名目のテストプロジェクトを作成.

$ mkdir -v servers
mkdir: created directory `servers'
$ cd servers/
$ cap install
mkdir -p config/deploy
create config/deploy.rb
create config/deploy/staging.rb
create config/deploy/production.rb
mkdir -p lib/capistrano/tasks
Capified

config/deploy/production.rbにサーバを追加.

server "myserver501", user: "hadoop", roles: [:hadoop, :client]
server "myserver502", user: "hadoop", roles: [:hadoop, :client]

Capfileに適当な処理を追加.

desc "Disk Info"
task :disk do on roles(:all) do |host|
    execute "df -h"
  end
end

実行.

$ sudo -u hadoop /usr/local/bin/cap production disk
INFO[7cbc909f] Running /usr/bin/env df -h on myserver502
DEBUG[7cbc909f] Command: df -h
INFO[a79eb9b6] Running /usr/bin/env df -h on myserver501
DEBUG[a79eb9b6] Command: df -h
DEBUG[7cbc909f]         Filesystem            Size  Used Avail Use% Mounted on
DEBUG[7cbc909f]         /dev/sda1             7.9G  863M  7.1G  11% /
DEBUG[7cbc909f]         tmpfs                 3.9G     0  3.9G   0% /dev/shm
DEBUG[7cbc909f]         /dev/sda10            232G  110G  122G  48% /home
DEBUG[7cbc909f]         /dev/sda5             4.0G  142M  3.8G   4% /tmp
DEBUG[7cbc909f]         /dev/sda3              20G  7.7G   13G  39% /usr
DEBUG[7cbc909f]         /dev/sda6             4.0G  2.2G  1.8G  55% /var
INFO[7cbc909f] Finished in 0.120 seconds with exit status 0 (successful).
DEBUG[a79eb9b6]         Filesystem            Size  Used Avail Use% Mounted on
DEBUG[a79eb9b6]         /dev/sda2             267G  101G  167G  38% /
DEBUG[a79eb9b6]         tmpfs                 3.9G     0  3.9G   0% /dev/shm
INFO[a79eb9b6] Finished in 0.148 seconds with exit status 0 (successful).

むちゃくちゃ見辛いw

ここを変更.

task :disk do on roles(:all) do |host|
↓
task :disk do on roles(:all), in: :sequence do |host|

実行.

$ sudo -u hadoop /usr/local/bin/cap production disk
INFO[2d2bd683] Running /usr/bin/env df -h on myserver501
DEBUG[2d2bd683] Command: df -h
DEBUG[2d2bd683]         Filesystem            Size  Used Avail Use% Mounted on
DEBUG[2d2bd683]         /dev/sda2             267G  101G  167G  38% /
DEBUG[2d2bd683]         tmpfs                 3.9G     0  3.9G   0% /dev/shm
INFO[2d2bd683] Finished in 0.144 seconds with exit status 0 (successful).
INFO[f96460ee] Running /usr/bin/env df -h on myserver502
DEBUG[f96460ee] Command: df -h
DEBUG[f96460ee]         Filesystem            Size  Used Avail Use% Mounted on
DEBUG[f96460ee]         /dev/sda1             7.9G  864M  7.1G  11% /
DEBUG[f96460ee]         tmpfs                 3.9G     0  3.9G   0% /dev/shm
DEBUG[f96460ee]         /dev/sda10            232G  111G  121G  48% /home
DEBUG[f96460ee]         /dev/sda5             4.0G  142M  3.8G   4% /tmp
DEBUG[f96460ee]         /dev/sda3              20G  7.7G   13G  39% /usr
DEBUG[f96460ee]         /dev/sda6             4.0G  2.2G  1.8G  55% /var
INFO[f96460ee] Finished in 0.194 seconds with exit status 0 (successful).

イイネ!