-
Notifications
You must be signed in to change notification settings - Fork 94
Rails 3 Support
EbDeployer ships with a Rails 3+ generator since version 0.4.5.
Add eb_deployer to your Gemfile
gem 'eb_deployer'
Setup AWS credentials:
$ export AWS_ACCESS_KEY_ID=xxx
$ export AWS_SECRET_ACCESS_KEY=xxx
Run Rails generator to generate configurations and rake file:
rails generate eb_deployer:install
It will setup AWS Elastic Beanstalk blue-green deployment configuration with a Postgres RDS instance as your Rails' backend database. The followings are details:
- Add file "lib/tasks/eb_deployer.rake", please run "rake -T eb" for tasks description. These tasks are simple and designed for you to customize.
- Add file "config/eb_deployer.yml", it includes basic blue-green configurations with a Postgres RDS instance resource.
- Add file "config/rds.json", it is a CloudFormation template file which provisions the Postgres RDS instance. A separated CloudFormation stack maintains all resources that are shared between different Elastic Beanstalk environments in blue-green deployment. Notice: each eb_deployer environment will create one.
- Add "gem 'pg'" to your Gemfile, as this initial configuration is hooking up with a Postgres RDS instance, we need postgres driver.
- Add file ".ebextenstions/01_postgres_packages.config", which installs Postgres dev packages on EC2 instances, so that we can build gem "pg" on your EC2 machine after deployed.
- Add a new production database configuration into "config/database.yml" file. Your original production configuration will be commented out.
Add all files that need to be deployed into your Git repository, because we will simply use "git ls-files" to find all files need to be packaged.
Deploy a dev environment for testing your application deployment:
rake eb:deploy
Then, when you're ready to deploy a production environment:
EB_DEPLOYER_ENV=production rake eb:deploy
You can run the following command to see full document of these tasks
rake -D eb
A rails specific alternative to this process is the AlienFast elastic-beanstalk gem which is a DRY configuration based approach that utilizes eb_deployer.