The target for the Cumulus project is to make cloud deployments scriptable, reliable and repeatable. It is of great importance for productivity and product stability that you are able to release often and with as few manual steps as possible.
Cumulus consists of two parts,
cumulus which is used to manage the software
bundling and deployment and the
cumulus-bundle-handler which handles
the software installation on the target servers.
Cumulus is built around three main concepts:
- An environment references a whole environment and all it’s CloudFormation stacks. It holds together information about the AWS account, which stacks to deploy and in which version.
- A stack is simply a CloudFormation stack.
- A bundle is a
.zipfile with code and configuration to unpack to instances.
Deployments with Cumulus can take many shapes depending on your project needs. But a common pattern can look like the example below.
If your build server delivers a package, then Cumulus can use that for deployment. The procedure would be something like this:
- The build server builds the software
- The build server places a
.zipfile on the file system
cumuluspicks up the software package - called a bundle in Cumulus - and rename it according to the given version and target environment
cumulusuploads the bundle to AWS S3
cumulusinitiates a AWS CloudFormation
UPDATE(depending on whether or not the stack exists previously)
- The EC2 instance has
cumulus-bundle-handlerwill download the bundle from S3
cumulus-bundle-handlerwill deploy the bundle to the instance
cumulus-bundle-handlerwill restart necessary services and run any configured deployment hooks
- Deployment is now completed
You can also use
cumulus to build your bundle, if you don’t get a
pre-packaged version of you software from the build server.
then take a certain path on the file system and convert it to a bundle.
Here’s an image of an example workflow. Please note that this is a very simple example with only one server, but there are no limitations in terms of what infrastructure you could set up with Cumulus.