Toolset to render and manage AWS CloudFormation ( https://pypi.org/project/cloudbender )
Go to file
Stefan Reimer e3cb29c454
ZeroDownTime/CloudBender/pipeline/head There was a failure building this commit Details
ci: Add Jenkins support, set Python version based on tags
2022-02-08 14:14:24 +01:00
cloudbender ci: Add Jenkins support, set Python version based on tags 2022-02-08 14:14:24 +01:00
tests First release on PyPy, Makefile and License 2019-02-07 22:05:33 +00:00
.gitignore Initial checkin 2018-11-22 18:31:59 +00:00
CHANGES.md feat: add DISABLE_SOPS 2021-10-13 13:23:31 +02:00
Dockerfile ci: Improve make docker 2022-02-08 13:49:08 +01:00
Jenkinsfile ci: Add Jenkins support, set Python version based on tags 2022-02-08 14:14:24 +01:00
LICENSE.md First release on PyPy, Makefile and License 2019-02-07 22:05:33 +00:00
Makefile ci: Add Jenkins support, set Python version based on tags 2022-02-08 14:14:24 +01:00
README.md chore: some more docs 2021-11-15 18:37:52 +01:00
cloudbender.png Update logo 2020-05-27 14:05:08 +01:00
dev-requirements.txt feat: Enabled Jinja2 V3 support 2022-01-26 13:27:07 +01:00
requirements.txt feat: Enabled Jinja2 V3 support 2022-01-26 13:27:07 +01:00
setup.cfg Fix cli entrypoint 2019-02-07 22:13:49 +00:00
setup.py feat: add Dockerfile, build tweaks 2021-09-23 19:27:06 +02:00

README.md

Logo CloudBender

About

Toolset to deploy and maintain infrastructure in automated and trackable manner.
First class support for:

Install

$ pip install cloudbender

State management

Cloudformation

All state is handled by AWS Cloudformation.
The required account and region are determined by CloudBender automatically from the configuration.

Pulumi

The state for all Pulumi resources are stored on S3 in your account and in the same region as the resources being deployed. No data is send to nor shared with the official Pulumi provided APIs.

CloudBender configures Pulumi with a local, temporary workspace on the fly. This incl. the injection of various common parameters like the AWS account ID and region etc.

CLI

Usage: cloudbender [OPTIONS] COMMAND [ARGS]...

Options:
  --version   Show the version and exit.
  --debug     Turn on debug logging.
  --dir TEXT  Specify cloudbender project directory.
  --help      Show this message and exit.

Commands:
  clean              Deletes all previously rendered files locally
  create-change-set  Creates a change set for an existing stack - CFN only
  create-docs        Parses all documentation fragments out of rendered...
  delete             Deletes stacks or stack groups
  get-config         Get a config value, decrypted if secret
  outputs            Prints all stack outputs
  preview            Preview of Pulumi stack up operation
  provision          Creates or updates stacks or stack groups
  refresh            Refreshes Pulumi stack / Drift detection
  render             Renders template and its parameters - CFN only
  set-config         Sets a config value, encrypts with stack key if secret
  sync               Renders template and provisions it right away
  validate           Validates already rendered templates using cfn-lint...

Config management

  • Within the config folder each directory represents either a stack group if it has sub-directories, or an actual Cloudformation stack in case it is a leaf folder.
  • The actual configuration for each stack is hierachly merged. Lower level config files overwrite higher-level values. Complex data structures like dictionaries and arrays are deep merged.

Quickstart

TBD

Secrets handling

Pulumi

CloudBender supports the native Pulumi secret handling. See Pulumi Docs for details.

Cloudformation

CloudBender supports SOPS to encrypt values in any config yaml file since version 0.8.1

If a sops encrypted config file is detected CloudBender will automatically try to decrypt the file during execution.
All required information to decrypt has to be present in the embedded sops config or set ahead of time via sops supported ENVIRONMENT variables.

SOPS support can be disabled by setting DISABLE_SOPS in order to reduce timeouts etc.