RailsアプリケーションをElastic Beanstalkにデプロイする
前回の記事で簡単なRailsアプリケーションのサンプルを作成しました。
今回はこのサンプルをElastic Beanstalkにデプロイしてみたいと思います。デプロイに必要となるコマンドラインツールなど、環境構築手順は前回の記事に書いてありますので、そちらを参照して下さい。
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が作成されています。
環境作成とアプリケーションのデプロイ
環境作成とデプロイをしていきます。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では以下のようになっています。
動作確認
Management Consoleに書かれているリンクにアクセスするとWebページが表示されます。
環境の削除
環境を削除する場合は以下のコマンドを実行します。
$ eb terminate
あとがき
前回作成したRailsアプリをElastic Beanstalkにデプロイしました。
その他の設定をしたい場合は別途ebコマンドを使ってやって下さい。これをCodePipelineとかと連携出来るのかな?
参考
- http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html
- http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby.rds.html#create_deploy_Ruby.rds.newDB
- create - Elastic Beanstalk
- EB CLI 3.x を使って Elastic Beanstalk に Rails アプリをデプロイする - xykのブログ
- ElasticBeanstalkでらくらくRails環境構築 - Qiita
- Rails 4.2 を PostgreSQL を使って Elastic Beanstalk にセットアップする (2) | FIVETEESIXONE