The NOVA cli application is a thin wrapper around the Amazon Web Services API to make creating infrastructure via CloudFormation and deploying Dockerized applications via CodeDeploy, even easier and faster.
- Python 2.7+
- AWS Command Line Interface is already setup.
- Docker is installed and running locally.
Install or upgrade to the latest version of NOVA with pip:
pip install -U gilt-nova
To start using, you need to write your nova.yml
file at the root of your application directory. Your NOVA descriptor file, describes your service and its environments, so the NOVA tool knows how to create its infrastructure and deploy it to said infrastructure.
The schema for the nova.yml
file is here.
Your nova.yml
file describes the infrastructure needed to run your service. An environment is a group of stacks to be deployed to an AWS account, most services will only have one environment. You can use multiple environments for deploying applications across AWS accounts and/or regions. An environment has multiple stacks, these are for example production, live-canary and dark-canary/staging stacks.
Once you've written your nova.yml
file, all you need to do is run nova stack create <environment name>
. Once Cloudformation has finished creating all your environments' resources, you can run nova deploy <environment name> <stack name>
. If you already have an existing service running in production, you can now move traffic to your new instances and remove the old infrastructure.
Usage Steps:
- Write
nova.yml
service descriptor. nova stack create <environment name>
nova deploy <environment name> <stack name>
NOTICE: Documentation is still a work in progress.
See Read The Docs
See Troubleshooting
To begin developing the virtual environment needs to be activated:
pyenv virtualenv 3.5.1 nova
pyenv activate nova
pip install -r requirements.txt
python setup.py develop
python setup.py sdist upload -r pypitest
pip install -U --pre -i https://testpypi.python.org/pypi gilt-nova
One-time Install zest.releaser
pip install zest.releaser[recommended]
To release:
fullrelease
When you're finished:
deactivate