This is no longer supported, there are modern and better tools for the same job.
AWS API and Fabric tasks for deploying applications into EC2 instances
You need pip, build-essential and python-dev installed to run this:
Ubuntu :
sudo apt-get install python-pip build-essential python-dev
Install package: :
pip install .
Create requirements.txt file in the project root. This will install the package from Github. :
git+ssh://git@github.com:markosamuli/velvet.git@v0.5.6
Create Python virtualenv for the project. :
mkvirtualenv PROJECT_NAME
Install packages. :
pip install -r requirements.txt
Create acceess key: :
aws iam create-access-key --user-name USERNAME > ~/.aws/PROJECT_NAME.json
Configure Velvet and import your AWS access key JSON file. :
velvet-config --import-access-key ~/.aws/PROJECT_NAME.json
--aws-config
Configure Velvet and import your AWS credentials. :
velvet-config --import-credentials credentials.csv
Create config/velvet.yml file.
Example config/velvet.yml file for a project deployed to OpsWorks. :
# deployment configuration file version (minimum supported Velvet version number)
version: 0.4
# defaults for all environments
defaults:
# application name
app_name: application
# deployment package file name without extension
deploy_package: application
# S3 bucket for application deployment
deploy_bucket: application-deploy
# path to CloudFormation template files
cloudformation_path: cloudformation
# build directories
build_root: application
build_grunt: application
build_exclude:
- vendor
- node_modules
cookbooks_root: cookbooks
cookbooks_package: application_cookbooks
# root directory inside the application for assets
assets_root: public_html/assets
# use compressed assets if avaiblable when publishing to S3
# assets are compressed with Grunt in the application build process
gzip_enabled: true
# assets to be published to S3
assets:
- css/**/*.css
- fonts/**/*
- js/**/*
- img/**/*
- video/**/*
opsworks:
stack: StackId
layer: WebLayerId
app: WebAppId
# define available environments
environments:
dev:
stacks:
- # CloudFormation / OpsWorks stack
name: dev-opsworks
role: opsworks
template: opsworks
# disable automatic CloudFormation rollback on failure
disable_rollback: true
assets_bucket: application-assets-dev
Create cfn-pyplates templates in cloudformation directory and create mappings YAML files for each environment. :
cloudformation
mappings
dev.yaml
mysql.py
opsworks.py
vpc.py
Run velvet-cloudformation to generate the templates. :
velvet-cloudformation dev opsworks
Fabric main file fabric.py is used for environment configuration and loading actual task packages.
# fabric.py (generic AWS setup)
from fabric.api import env, task
import velvet.config
import velvet.aws.config
##
# import application specific tasks
##
# build tasks
import build
# deployment tasks
import deploy
# infrastructure provisioning tasks
import provision
##
# define environments
##
@task
def environment(name):
# Load AWS configuration
velvet.aws.config.load()
# Load environment configuration
velvet.config.environment(name)
The MIT License
Note that this project is no longer maintained so please consider using other tools instead.