概要
ようやくバージョン3を触ったので忘れないようにメモしておきます
インストールから簡単なレシピ作成まで実施してみました
環境
- CentOS 6.6 64bit
- Ruby 2.2.1
- Gem 2.4.6
- Capistrano 3.4.0
インストール
事前にRubyおよびGemのインストールは完了しておいてください
gem install capistrano
でインストールは完了です
初期化
cap install
適当なディレクトリに移動した上で上記のコマンドを実行しましょう
Capistranoの実行に必要なファイル群を自動で生成してくれます
Capistrano2ではcapify
というコマンドが使われていたのですが、それは使えなくなったようです
ファイル確認
cap install
後に作成されるファイルは以下の通りでした
合計 12
drwxr-xr-x 3 root root 4096 4月 15 20:17 2015 config
drwxr-xr-x 3 root root 4096 4月 15 20:17 2015 lib
-rw-r--r-- 1 root root 837 4月 15 20:17 2015 Capfile
動作確認
cap console
指定したホストに任意のコマンドを発行できるようにしてみます
- vim Capfile
require 'capistrano/console'
上記を追記します
- vim config/deploy/production.rb
role :web, %w{host1 host2}
host1, host2 にはアクセスしたいサーバを指定します
IPでもOKです
host1, host2 にノンパスでSSHアクセスできるのであれば設定はこれでOKです
SSHに認証がある場合は以下も実施します
- vim config/deploy/production.rb
set :ssh_options, {
user: 'root',
keys: %w(/path/to/key.pem),
forward_agent: false,
auth_methods: %w(publickey),
passphrase: 'password'
}
上記はユーザがrootで公開鍵/path/to/key.pemを使ってパスワードに「password」を使って認証する場合の設定です
ポートは指定していないので22番になります
また上記の設定はすべてのサーバの認証に使われる情報なので今回の場合はhost1とhost2の両方で同じ認証である必要があります
設定は以上です
では実行してみましょう
cap production console ROLES=web
とするとproduction>
というプロンプトになるのでコマンドを何か実行してみましょう
role :web
で指定したhost1とhost2に同じコマンドが発行されてその結果が返ってくると思います
実行時に指定しているproduction
を指定しないとconfig/deploy/staging.rb
というファイルが読み込まれて実行されます
Capistrano3ではマルチ環境に対応しているため、サービス環境に対して実行したい場合はproduction
を付与する必要があります
対話的ではありますがcap console
だけでもできるようになっていればかなりオペレーションがかなり簡易になると思います
レシピを作成する
せっかくなので独自のレシピも作成してみましょう
- vim config/deploy.rb
namespace :test do
desc 'Show hostname'
task :show_hostname do
on roles :web do
execute 'hostname'
end
end
end
上記を最下部に追記します
タスク自体は非常に単純でロール:web
に属するサーバ郡に対してhostname
コマンドを実行するだけです
追記したらタスクを実行してみます
cap -T
でタスクの一覧が確認できます
cap production test:show_hostname
でタスクを実行することができます
今回はconfig/deploy.rbにレシピを追加しましたがどうやらlib/capistrano/tasks配下に.rakeファイルを作成していくのがCapistrano3では普通のようです
最後に
Capistrano2に慣れているとだいぶ使い勝手変わっているので初めは困惑するかもしれません
タスクの書き方は基本的には変わりませんが、duplicatedになっているメソッド等もありそうなので、ドキュメントを見ながら作成したほうがいいかと思います
Tips
デフォルトで用意してあるデプロイタスクが邪魔という場合にはCapfile
に記載してあるrequire 'capistrano/deploy'
をコメントアウトすればOKです
ただそうするとrestart
というメソッドが使えなくなるのでconfig/deploy.rb
に記載してあるdeployタスクも削除しないとエラーで怒られてしまいます
0 件のコメント:
コメントを投稿