An AWS infrastructure automation tool using Python / Django and AWS Cloud Formation Templates.
The idea is to abstract away the infrastructure provisioning for a standard Rails application. Provide a Github link, some additional parameters like how many servers you want and hit "Create". It's often too fiddly to get something online without going through a managed PaaS like Elastic Beanstalk or Heroku, so this service provides a simple wrapper to AWS services
This currently allows you to upload and deploy a MySQL backed Rails app and deploy updates to the master branch with a single button click.
Ensure you have Docker and Docker Compose installed
git clone https://github.com/Adrian1707/cloud69.git
cd cloud69
Set two ENVS: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY obtained from your ~/.aws/credentials file
Inside the rails_stack.json file I still have the VPC and subnet ids from my AWS account inside the Parameters list. Change this if you want to get it working.
Inside your database.yml file, when setting the name, host, port, username and password, these need to be referenced via envs specified like so. This is because when the db migration runs through the CloudFormation template, the variables are passed
through with these names
- ENV["DB_HOST"]
- ENV["DB_PORT"]
- ENV["DB_USER"]
- ENV["DB_PASSWORD"]
- ENV["DB_NAME"]
docker-compose build
docker-compose up
visit localhost:8000/stacks
- Don't hardcode VPC & subnets in the CF Template
- Allow multiple database adapters like Postgres, SQLite etc
- AWS user authentication / omniauth
- Serverless / lambda automation feature