概要
Capistrano3ではcap
コマンド実行時に環境を指定する必要があります
レシピ内で環境ごとに設定した値を参照する方法を紹介します
また今回紹介する方法以外にも様々な方法があるのであくまで参考程度に御覧ください
環境
- CentOS 6.6 64bit
- Capistrano 3.4.0
環境ごとの設定を記載する
cap install
を使って初期設定をするとconfig/deploy/production.rb
とconfig/deploy/staging.rb
というファイルができます
これに設定ごとの値を設定します
例えば以下の設定をそれぞれのファイルに記載してください
- config/deploy/production.rb
set :env, "prd"
- config/deploy/staging.rb
set :env, "stg"
「:env」というシンボルに値をsetします
この :env をレシピ側受け取って処理してみます
レシピ側で値を取得する
Capistranoのレシピは「lib/capistrano/tasks/sample.rake」に作成しているものとします
例えばあるレシピ上でシンボルを取得するには以下のようにします
namespace :test do
desc 'this is test task'
task :do_test do
on roles :all do
puts fetch(:env)
end
end
end
見ていただければ一目瞭然ですが、fetch
というメソッドをタスク内で使用することで値を取得できます
以下のように書くことも可能です
puts "#{fetch(:env)}"
変数展開の形でも記載できます
こんな感じでconfig用のruby側で必要な値をset
してそれをレシピ側でfetch
するのが簡単です
そもそもsetするときにJsonから読み取ってsetするなんてこともできると思います
0 件のコメント:
コメントを投稿