All Projects → adonig → aloisius

adonig / aloisius

Licence: BSD-2-Clause license
A Python library to create/update/delete AWS CloudFormation stacks in parallel

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to aloisius

sam-scaffold
A template for an AWS SAM project with continuous integration.
Stars: ✭ 80 (+400%)
Mutual labels:  cloudformation
cfn-ami-to-mapping
Generate your CloudFormation RegionMap automatically
Stars: ✭ 34 (+112.5%)
Mutual labels:  cloudformation
cfn-deploy
A useful GitHub Action to help you deploy cloudformation templates
Stars: ✭ 14 (-12.5%)
Mutual labels:  cloudformation
paradiseo
An evolutionary computation framework to (automatically) build fast parallel stochastic optimization solvers
Stars: ✭ 73 (+356.25%)
Mutual labels:  parallelization
cfn-tf-custom-types
CloudFormation Custom Types for Terraform resources.
Stars: ✭ 53 (+231.25%)
Mutual labels:  cloudformation
bitops
Automate the provisioning and configuration of cloud infrastructure.
Stars: ✭ 28 (+75%)
Mutual labels:  cloudformation
aws-batch-example
Example use of AWS batch
Stars: ✭ 96 (+500%)
Mutual labels:  cloudformation
eks-deep-dive-2019
Amazon EKS Deep Dive 2019
Stars: ✭ 61 (+281.25%)
Mutual labels:  cloudformation
cfn101-workshop
AWS CloudFormation Workshop
Stars: ✭ 114 (+612.5%)
Mutual labels:  cloudformation
eks-cluster
Quickly spin up an AWS EKS Kubernetes cluster using AWS CloudFormation
Stars: ✭ 41 (+156.25%)
Mutual labels:  cloudformation
collector-backend
Back-end collector API and publishers for Desole
Stars: ✭ 64 (+300%)
Mutual labels:  cloudformation
corebench
corebench - run your benchmarks against high performance computing servers with many CPU cores
Stars: ✭ 29 (+81.25%)
Mutual labels:  parallelization
quickstart-microsoft-sql
AWS Quick Start Team
Stars: ✭ 60 (+275%)
Mutual labels:  cloudformation
aws-serverless-code-pipeline-cf-template
This solution allows you to use a AWS CloudFormation template to create AWS CodePipeline, and AWS CodeBuild supporting Serverless Framework and GitHub
Stars: ✭ 40 (+150%)
Mutual labels:  cloudformation
wolkenkratzer
Javascript library for generating CloudFormation templates
Stars: ✭ 13 (-18.75%)
Mutual labels:  cloudformation
traefik-cluster-ecs
This is a tutorial on how to deploy a Traefik Load Balancer in AWS using CloudFormation to load balancer development ECS tasks using hosts (FQDN).
Stars: ✭ 62 (+287.5%)
Mutual labels:  cloudformation
StackJanitor
StackJanitor is a serverless, event-driven stack cleanup tool.
Stars: ✭ 37 (+131.25%)
Mutual labels:  cloudformation
aws-autoscaling-gitlab-runner
CloudFormation template to deploy a GitLab Runner with auto-scaling on AWS.
Stars: ✭ 44 (+175%)
Mutual labels:  cloudformation
parallelizer
Simplifies the parallelization of function calls.
Stars: ✭ 62 (+287.5%)
Mutual labels:  parallelization
WazeCCPProcessor
Waze WARP takes your CCP data feed and processes it into your cloud provider for access, analysis, and visualization. An Open Government Coalition (OGC) project. @GovInTheOpen
Stars: ✭ 80 (+400%)
Mutual labels:  cloudformation

aloisius

https://travis-ci.org/adonig/aloisius.svg?branch=master

About

aloisius helps you to manage the life-cycle of AWS CloudFormation stacks. It allows you to use outputs from one stack as input parameters to other stacks. There are other tools which allow you to do so, like i.e. Cumulus or Ansible, but I couldn't find one which doesn't require you to use YAML or Jinja2. It is a pure Python library and it is intended to be used in inter-play with troposphere, but you can also use it with any CloudFormation JSON templates.

License

The BSD 2-Clause License: http://opensource.org/licenses/BSD-2-Clause

Installation

aloisius can be installed using the pip distribution system for Python by issuing:

$ pip install aloisius

Alternatively, you can run use setup.py to install by cloning this repository and issuing:

# python setup.py install

Examples

A simple example creating a VPC containing an RDS could look like this:

#!/usr/bin/env python

from aloisius import Stack
import boto3

# I keep my troposphere templates as modules in a package.
from templates.vpc import template as template_vpc
from templates.rds import template as template_rds

# You can set your own boto3 session and override the default. E.g:
# aloisius.session = boto3.session.Session(profile_name: "PROFILE")

# I normally put some constants and helper functions here.
app_name = 'myapp'
region_name = 'eu-central-1'
stack_name = lambda x: '-'.join([app_name, region_name, x])

vpc = Stack(
    StackName=stack_name('vpc'),
    TargetState='present',
    RegionName=region_name,
    TemplateBody=template_vpc.to_json(),
)

rds = Stack(
    StackName=stack_name('rds'),
    TargetState='present',
    RegionName=region_name,
    TemplateBody=template_rds.to_json(),
    Parameters={
        # You can use outputs of previously created stacks as parameters.
        'VpcId': vpc.outputs['VpcId'],
        'PrivateSubnets': vpc.outputs['PrivateSubnets'],
        # More parameters here.
    },
)

# You can wait for all of the stacks to finish

aloisius.stacks.wait()

# Or you can check if they were all applied successfuly

if not aloisius.stacks.success():
  exit(1)

# Or you can iterate over their outputs

for stack in aloisius.stacks:
  for key, value in stack.outputs.items():
    print "{0}={1}".format(key, value)

Why you shouldn't use aloisius

  • There's not much documentation (but there are comments in the code).

Why you should use aloisius

  • You could find some bugs and help to make it better.
  • Parallel stack creation/deletion.
  • Integrates nicely with troposphere: No JSON and no YAML.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].