okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

RailsアプリケーションをElastic Beanstalkにデプロイする

前回の記事で簡単なRailsアプリケーションのサンプルを作成しました。
今回はこのサンプルをElastic Beanstalkにデプロイしてみたいと思います。デプロイに必要となるコマンドラインツールなど、環境構築手順は前回の記事に書いてありますので、そちらを参照して下さい。

f:id:okochang:20150714153507j:plain

EB CLIの設定

作成したプロジェクトリポジトリでeb initコマンドを実行して環境設定を行います。

$ cd ~/repos/mimawarigumi
$ eb init

Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-southeast-1 : Asia Pacific (Singapore)
7) ap-southeast-2 : Asia Pacific (Sydney)
8) ap-northeast-1 : Asia Pacific (Tokyo)
9) sa-east-1 : South America (Sao Paulo)
(default is 3): 1

Enter Application Name
(default is "mimawarigumi"): 
Application mimawarigumi has been created.

It appears you are using Ruby. Is this correct?
(y/n): y

Select a platform version.
1) Ruby 2.2 (Puma)
2) Ruby 2.2 (Passenger Standalone)
3) Ruby 2.1 (Puma)
4) Ruby 2.1 (Passenger Standalone)
5) Ruby 2.0 (Puma)
6) Ruby 2.0 (Passenger Standalone)
7) Ruby 1.9.3
(default is 1): 1
Do you want to set up SSH for your instances?
(y/n): n

環境設定が完了すると、以下のように.gitignoreが更新されており、.elasticbeanstalk/configが作成されています。
変更点は忘れずにコミットしておいて下さい。

$ git diff
diff --git a/.gitignore b/.gitignore
index cd84d08..a90ebee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,8 @@
 
 # Ignore dotenv
 /.env
+
+# Elastic Beanstalk Files
+.elasticbeanstalk/*
+!.elasticbeanstalk/*.cfg.yml
+!.elasticbeanstalk/*.global.yml
$ ls .elasticbeanstalk/
config.yml
$ git add .gitignore
$ git commit -m "Elastic Beanstalkの設定ファイルを除外するようにした"

AWS Management Consoleでは、以下のようにApplicationが作成されています。

f:id:okochang:20150714215024p:plain

環境作成とアプリケーションのデプロイ

環境作成とデプロイをしていきます。eb createコマンドでタイムアウトしてしまう場合は--timeoutオプションを使ってみて下さい(タイムアウトしても環境作成とデプロイが失敗するわけではありません)。

$ eb create --database --database.engine postgres
Enter Environment Name
(default is mimawarigumi-dev): mimawarigumi-env
Enter DNS CNAME prefix
(default is mimawarigumi-env): 

Enter an RDS DB username (default is "ebroot"): mimawarigumi
Enter an RDS DB master password: 
Retype password to confirm: 
WARNING: Deploying a previously deployed commit.
Environment details for: mimawarigumi-env
  Application name: mimawarigumi
  Region: us-east-1
  Deployed Version: a265
  Environment ID: e-zhkdupp9c6
  Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.2 (Puma)
  Tier: WebServer-Standard
  CNAME: mimawarigumi-env.elasticbeanstalk.com
  Updated: 2015-07-15 00:11:00.587000+00:00
Printing Status:
INFO: createEnvironment is starting.

(略)

---
$ eb setenv SECRET_KEY_BASE=`bundle exec rake secret`

Management Consoleでは以下のようになっています。

f:id:okochang:20150715095204p:plain

動作確認

Management Consoleに書かれているリンクにアクセスするとWebページが表示されます。

f:id:okochang:20150715095336p:plain

環境の削除

環境を削除する場合は以下のコマンドを実行します。

$ eb terminate

あとがき

前回作成したRailsアプリをElastic Beanstalkにデプロイしました。
その他の設定をしたい場合は別途ebコマンドを使ってやって下さい。これをCodePipelineとかと連携出来るのかな?