Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mskutin/52f6bc427e85cd34a843519775a0dc31 to your computer and use it in GitHub Desktop.
Save mskutin/52f6bc427e85cd34a843519775a0dc31 to your computer and use it in GitHub Desktop.
Settings to deploy to AWS Elastic Beanstalk on CircleCi (EB Cli 3)

###Rails apps to AWS Elastic Beanstalk through CircleCI.

Configure Environments Variables

On Project Settings > Environment Variables add this keys:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
    The aws user must have the right permissions. This can be hard, maybe, this can help you.

Create a bash script to create the eb config file

./setup-eb.sh

set -x
set -e

mkdir /home/ubuntu/.aws
touch /home/ubuntu/.aws/config
chmod 600 /home/ubuntu/.aws/config
echo "[profile eb-cli]" > /home/ubuntu/.aws/config
echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" >> /home/ubuntu/.aws/config
echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" >> /home/ubuntu/.aws/config

Configure circle.yml

Add the awsebcli dependency:

dependencies:
  pre:
    - sudo pip install awsebcli

Add the deployment config:

deployment:
  production:
    branch: master
    commands:
      - bash ./setup-eb.sh
      - eb deploy
  • If your deploy user don't have the elasticbeanstalk:DescribeEvents permission, the eb deploy will run for ever. CircleCI will cancel it after 10 minutes and break the build with timeout.

Create the EB Cli config file

eb init will create this file for you. However, if you don't want to run it, you can simply create and configure this file manualy:

./elasticbeanstalk/config.yml

branch-defaults:
  master:
    environment: you-environment-name
global:
  application_name: your-application-name
  default_ec2_keyname: ec2-key-pair-name
  default_platform: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.2 (Puma)
  default_region: sa-east-1
  profile: eb-cli
  sc: git
@mskutin
Copy link
Author

mskutin commented Sep 21, 2016

Solution

  • Set Ubuntu 14.04 (Trusty) Project Settings > Build Environment
  • Update the awsebcli dependency
dependencies:
  pre:
    - pip install awsebcli

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment