こんにちは。Takitaです。
Capistranoを利用して複数サーバーにデプロイしている構成の場合に、それぞれのサーバーにデプロイする方法について調べました。
./config/deploy/#{environment}.rb
を修正して、デプロイしたいサーバーだけにするという方法でもできるのですが、コマンドで解決できないかなと思って調べました。
Capistranoのロールフィルタリングという仕組みを使います。
(動作確認はしていませんが、ホストフィルタリングでも同様のことができます)
server 'xx.xx.xx.xx', user: 'user', roles: %w[web web1]
server 'xx.xx.xx.xx', user: 'ubuntu', roles: %w[web web2]
上記のように web1
web2
とロールを付与することによって、以下のようなコマンドでそれぞれのサーバーに対してデプロイできます。
bundle exec cap #{environment} deploy
-> web1, web2の両方にデプロイ
ROLES=web1 bundle exec cap #{environment} deploy
-> web1だけにデプロイ
ROLES=web2 bundle exec cap #{environment} deploy
-> web2だけデプロイ
http://capistranorb.com/documentation/advanced-features/role-filtering/
http://capistranorb.com/documentation/advanced-features/host-filtering/
http://umisora2.hatenablog.com/entry/2016/02/02/201415