capistranoをほんのちょっと動かしてみる④(namespace)
(3)ではひとつのタスクに複数の処理を記載した。 今回はnamespaceを使って処理を分割する。 namespaceはタスクが増えたときに固めて定義できる空間名みたい。
変更するファイルは下記。 ./config/develop/manage.rb
load './config/servers.rb'
namespace :exec do
dir = "/root/test"
desc "test"
task :mkdir do
on roles( :client ) do
execute "mkdir -p #{dir}"
end
end
task :ls do
on roles( :client ) do
execute "ls -ld #{dir}"
end
end
end
mkdirのタスクを実行してみる。(cap 環境 空間名:タスク名)
$ cap manage exec:mkdir
INFO [70b07f74] Running /usr/bin/env mkdir -p /root/test on capistrano
DEBUG [70b07f74] Command: mkdir -p /root/test
INFO [3cde3965] Running /usr/bin/env mkdir -p /root/test on openvz
DEBUG [3cde3965] Command: mkdir -p /root/test
INFO [e8e2ccd0] Running /usr/bin/env mkdir -p /root/test on chef
DEBUG [e8e2ccd0] Command: mkdir -p /root/test
INFO [3cde3965] Finished in 0.150 seconds with exit status 0 (successful).
INFO [e8e2ccd0] Finished in 0.335 seconds with exit status 0 (successful).
INFO [70b07f74] Finished in 0.386 seconds with exit status 0 (successful).
lsのタスクを実行してみる。(cap 環境 空間名:タスク名)
$ cap manage exec:ls
INFO [36d6b1ec] Running /usr/bin/env ls -ld /root/test on capistrano
INFO [d3719a31] Running /usr/bin/env ls -ld /root/test on openvz
DEBUG [d3719a31] Command: ls -ld /root/test
INFO [72a2e639] Running /usr/bin/env ls -ld /root/test on chef
DEBUG [72a2e639] Command: ls -ld /root/test
DEBUG [36d6b1ec] Command: ls -ld /root/test
DEBUG [d3719a31] drwxr-xr-x 2 root root 4096 Jul 7 02:15 /root/test
INFO [d3719a31] Finished in 0.160 seconds with exit status 0 (successful).
DEBUG [36d6b1ec] drwxr-xr-x. 2 root root 4096 Jul 7 02:39 /root/test
INFO [36d6b1ec] Finished in 0.384 seconds with exit status 0 (successful).
DEBUG [72a2e639] drwxr-xr-x. 2 root root 4096 Jul 7 01:36 /root/test
INFO [72a2e639] Finished in 0.390 seconds with exit status 0 (successful).