Overview¶
Introduction¶
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.
Basic concepts¶
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
.zip
file with code and configuration to unpack to instances.
Deployment workflow¶
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
.zip
file on the file system cumulus
picks up the software package - called a bundle in Cumulus - and rename it according to the given version and target environmentcumulus
uploads the bundle to AWS S3cumulus
initiates a AWS CloudFormationCREATE
orUPDATE
(depending on whether or not the stack exists previously)- The EC2 instance has
cumulus-bundle-handler
installed cumulus-bundle-handler
will download the bundle from S3cumulus-bundle-handler
will deploy the bundle to the instancecumulus-bundle-handler
will 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. cumulus
can
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.
Supported platforms¶
- Cumulus supports Linux, Mac OS X and Windows
- Cumulus Bundle Handler supports Linux and Windows (and likely Mac OS X, but testing is needed)
The rest of the work is down within the AWS CloudFormation template. Please have a look at our CloudFormation template examples.