Qaz is a cloud native AWS Cloudformation Template Management CLI tool that focuses on simplifying the process of deploying infrastructure on AWS via Cloudformation by utilising the Go Templates Library and custom functions to generate diverse and configurable templates.
For Qaz, being cloud native means having no explicit local dependencies and utilising resources within the AWS Ecosystem to extend functionality. As a result Qaz supports various methods for dynamically generating infrastructure via Cloudformation.
Qaz emphasizes minimal abstraction from the underlying AWS Cloudformation Platform. It instead enhances customisability and re-usability of templates through dynamic template creation and logic.
Advanced template functionality & custom built-in template functions
Support for Cloudformation templates written in JSON & YAML
Dynamic deploy script generation utilising the built-in templating functionality
Single Yaml, JSON or HCL configuration file for multiple stack templates per environment
Utilises Go-routines for Multi-stack concurrent Cloudformation requests for all appropriate calls
Support for AWS Profile selection & Role switching for Multi-AWS account environments
Cross stack referencing with support for Cloudformation Exports(Preferred) & dynamically retrieving stack outputs on deploy
Decoupled build mechanism. Qaz can manage infrastructure by accessing config/templates via AWS Lambda, S3, or HTTP(S). The tool does not need to be in the same place as the templates/config.
Decoupled stack management. Stacks can be launched individually from different locations and build consistently according to the dependency chain as long as the same configuration file is read.
Encryption & Decryption of template values & deployment of encrypted templates using AWS KMS.
Simultaneous Cross-Account or Cross-Region Stack Deployments.
Support for fetching templates and configuration via Lambda Execution allows for dynamically generating Cloudformation using any of the Languages supported in AWS Lambda, (Go, nodejs, python, java, etc)
Troposphere & GoFormation support via Lambda.
Deploy Cloudformation directly from your Git Repo
Interactive Shell Mode
Dynamic Config File generation using Template Functions (New!) - Allows configuration values to be retrieved using API calls, from S3, decrypted via KMS and much more.
If you have Golang installed:
go get github.com/daidokoro/qaz
On Mac or Linux:
curl https://raw.githubusercontent.com/daidokoro/qaz/master/install.sh | sh
Or, you may need sudo:
curl https://raw.githubusercontent.com/daidokoro/qaz/master/install.sh | sudo sh
- AWS credentials, you can read about how to set these up here
Wiki for more on how Qaz works!Checkout the
- Custom Template Functions
- Templating with Qaz
- Troposphere via Lambda
- Deploy using Git
examples folder for more examples of usage. More examples to come.
$ qaz Usage: qaz [flags] qaz [command] Available Commands: change Change-Set management for AWS Stacks check Validates Cloudformation Templates deploy Deploys stack(s) to AWS exports Prints stack exports generate Generates template from configuration values git-deploy Deploy project from Git repository help Help about any command init Creates an initial Qaz config file invoke Invoke AWS Lambda Functions outputs Prints stack outputs set-policy Set Stack Policies based on configured value shell Qaz interactive shell - loads the specified config into an interactive shell status Prints status of deployed/un-deployed stacks terminate Terminates stacks update Updates a given stack values Print stack values from config in YAML format Flags: --debug Run in debug mode... -h, --help help for qaz --no-colors disable colors in outputs -p, --profile string configured aws profile (default "default") --version print current/running version Use "qaz [command] --help" for more information about a command.
Roadmap and status
Qaz is now in beta, no more breaking changes to come. The focus from this point on is stability.
- More Comprehensive Documentation
- More Deploy/Gen-Time Functions
- pkazmierczak - Qaz was originally a fork of the Bora Project
Fork -> Patch -> Push -> Pull Request
Pull requests welcomed....