Posted at

CapistranoでELB配下のEC2インスタンスを取得してデプロイ

More than 5 years have passed since last update.

CapistranoでAWSのELB(Elastic Load Balancing)配下にあるEC2インスタンスを取得してデプロイする方法です。


gem追加

AWS SDK for Ruby を使います。

Gemfileにaws-sdkを追加


Gemfile

gem 'aws-sdk'


bundle でインストール


Capistrano設定

deploy.rbを下記のようにします。


deploy.rb

require 'aws-sdk'

AWS.config({
:access_key_id => '<アクセスキーID>',
:secret_access_key => '<シークレットアクセスキー>',
:ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com',
:elb_endpoint =>'elasticloadbalancing.ap-northeast-1.amazonaws.com'
})
elb = AWS::ELB.new.load_balancers['<ELBの名前>']
instances = elb.instances.select {|i| i.exists? && i.status == :running}.map(&:dns_name)

role :app, *instances



  • アクセスキーIDとシークレットアクセスキーは こちら で確認できます。

  • エンドポイントは こちら で確認できます。リージョンによって異なります。上の例ではTokyoリージョンです。

  • ELBの名前は管理画面から確認できます。


デプロイ

あとは普通に cap deploy とかやるだけです。

ELB配下にEC2インスタンスを追加したり削除してもCapistranoの設定は変更せずにデプロイできます。