少し興味はあったのでちょこっとだけ触ってみようかな。
デプロイツールという事で有名みたいですが、数台のサーバーにコマンドを流すという事もできるらしいので、その辺をやってみようかなと。
最近のお決まりのパターンでコマンドを叩いて各テンプレを作成してもらいます。
Capstrano 2系のHow toサイトを見ていたようでコマンド違うよ~ってのが表示されます。
[takeken@ubuntu]$ capify . -------------------------------------------------------------------------------- Capistrano 3.x is incompatible with Capistrano 2.x. This command has become `cap install ` in Capistrano 3.x For more information see http: //www .capistranorb.com/ --------------------------------------------------------------------------------. |
改めてcap installでテンプレ作成をやってみると2個のディレクトリと5個のファイルが出来上がり。
[takeken@ubuntu]$ 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 create Capfile Capified |
ざっくりと説明を調べてみたところconfig/deploy.rbは共通の設定を書いて、config/deploy直下の各ファイルに各環境でのことを書く。
実行時に指定することが可能。
今回はとりあえず動かしてコマンドを流してみるよという事でconfig/deploy/ope.rbというのを作ってみました。
カレントディレクトを表示して、ファイル一覧を表示するだけです。
[takeken@ubuntu]$ cat config /deploy/ope .rb task : ls do on roles(:ope) do execute "pwd" execute "ls" end end |
対象のサーバーですが、Dockerでsshだけ開いてるコンテナを作成しました。
Docker file # FROM centos:centos6 # # RUN yum update -y RUN yum install -y install openssh-server sudo # RUN mkdir -p /var/run/sshd RUN useradd -d /home/takeken -m -s /bin/bash takeken RUN echo takeken:takeken | chpasswd RUN echo 'takeken ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers RUN /etc/init .d /sshd start |
5台作成します。
[takeken@ubuntu]$ sudo docker run -d -p 22 demo:demo01 /usr/sbin/sshd -D 8351ce3d52faade30e0bf19d59fd68a80da7e7e23dff8853ab7aedc9d451951e [takeken@ubuntu]$ sudo docker run -d -p 22 demo:demo01 /usr/sbin/sshd -D 129c6ac0a707506313c897fd5aa442661812986d3bfc1911c5a5c43001d41582 [takeken@ubuntu]$ sudo docker run -d -p 22 demo:demo01 /usr/sbin/sshd -D fa70f71db09fc439e7bae6a7db5aebdfd5037e144dd022f483b068a22a815263 [takeken@ubuntu]$ sudo docker run -d -p 22 demo:demo01 /usr/sbin/sshd -D f0f3b56b950b5f2e3c2d7f8669dc525fe68e5c3322f999912634c2a35740e7bd [takeken@ubuntu]$ sudo docker run -d -p 22 demo:demo01 /usr/sbin/sshd -D 1def3de7c39489fa05a4dd4a485abf83212348f0ed4f2ddc488ea9ad45ec4f5e |
config/deploy.rbには共通設定を書くらしく、各サーバーの認証を書きました。
天邪鬼なのでパスワード認証です。
# config valid only for current version of Capistrano lock '3.3.4' # Default value for :pty is false set :pty, true #set :password, ask('Server password:', nil) server '172.17.0.2' , user: 'takeken' , port: 22, password: 'takeken' , roles: %w{ope} server '172.17.0.3' , user: 'takeken' , port: 22, password: 'takeken' , roles: %w{ope} server '172.17.0.4' , user: 'takeken' , port: 22, password: 'takeken' , roles: %w{ope} server '172.17.0.5' , user: 'takeken' , port: 22, password: 'takeken' , roles: %w{ope} server '172.17.0.6' , user: 'takeken' , port: 22, password: 'takeken' , roles: %w{ope} |
では最低限ながら準備ができたと思うので実行してみました。
[takeken@ubuntu]$ cap ope ls INFO[c19bf0a4] Running /usr/bin/env pwd on 172.17.0.4 INFO[99ed9839] Running /usr/bin/env pwd on 172.17.0.6 INFO[63c04ca8] Running /usr/bin/env pwd on 172.17.0.5 DEBUG[c19bf0a4] Command: /usr/bin/env pwd INFO[f068bcf9] Running /usr/bin/env pwd on 172.17.0.2 INFO[587d697b] Running /usr/bin/env pwd on 172.17.0.3 DEBUG[99ed9839] Command: /usr/bin/env pwd DEBUG[63c04ca8] Command: /usr/bin/env pwd DEBUG[f068bcf9] Command: /usr/bin/env pwd DEBUG[587d697b] Command: /usr/bin/env pwd DEBUG[63c04ca8] /home/takekenDEBUG [f068bcf9] /home/takekenINFO [c19bf0a4] Finished in 0.192 seconds with exit status 0 (successful). DEBUG[c19bf0a4] /home/takeken DEBUG[63c04ca8] DEBUG[587d697b] /home/takeken INFO[c19bf0a4] Finished in 0.192 seconds with exit status 0 (successful). DEBUG[99ed9839] /home/takeken INFO[63c04ca8] Finished in 0.176 seconds with exit status 0 (successful). INFO[587d697b] Finished in 0.174 seconds with exit status 0 (successful). DEBUG[f068bcf9] INFO[35b2672b] Running /usr/bin/env ls on 172.17.0.4 INFO[99ed9839] Finished in 0.178 seconds with exit status 0 (successful). INFO[00b03ea8] Running /usr/bin/env ls on 172.17.0.5 INFO[d71e4a20] Running /usr/bin/env ls on 172.17.0.3 INFO[f068bcf9] Finished in 0.176 seconds with exit status 0 (successful). DEBUG[35b2672b] Command: /usr/bin/env ls INFO[ce5c9979] Running /usr/bin/env ls on 172.17.0.6 DEBUG[00b03ea8] Command: /usr/bin/env ls DEBUG[d71e4a20] Command: /usr/bin/env ls INFO[bf16475f] Running /usr/bin/env ls on 172.17.0.2 DEBUG[ce5c9979] Command: /usr/bin/env ls DEBUG[bf16475f] Command: /usr/bin/env ls INFO[35b2672b] Finished in 0.029 seconds with exit status 0 (successful). INFO[ce5c9979] Finished in 0.026 seconds with exit status 0 (successful). INFO[bf16475f] Finished in 0.026 seconds with exit status 0 (successful). INFO[00b03ea8] Finished in 0.030 seconds with exit status 0 (successful). INFO[d71e4a20] Finished in 0.029 seconds with exit status 0 (successful). |
結果はどうやら上手くいったようですが、5台に一気にやるのでごちゃごちゃして訳が分かりませんな。選んだコマンドが良くなかったようです。
シェルスクリプトを実行してみようと、やってみましたがGitHubからスクリプトを取ってくるところだったり、実行がうまくいかなかったりと今のところはサクッと完了できなかったので、今回はひとまずこれで完了します。
参考サイト
入門 Capistrano 3 ~ 全ての手作業を生まれる前に消し去りたい | GREE Engineers’ Blog: