❯ ize:
Opinionated tool for infrastructure and code.
This tool is designed as a simple wrapper around popular tools, so they can be easily integrated in one infra: terraform, ECS deployment, serverless, and others.
It combines infra, build and deploy workflows in one and is too simple to be considered sophisticated. So let's not do it but rather embrace the simplicity and minimalism.
Workflow
Let's imagine we're deploying a terraform-based infra and a Go-based service named goblin
.
The general workflow that ❯ize dictates is the following:
1. Deploy infrastructure
Currently it supports Terraform, for which it generates a minimal backend config for terraform and runs it. Think of it as a minimalistic Terragrunt, but you can always switch to a vanilla Terraform. Check out directory structure examples.
ize deploy infra
2. Push secrets for goblin
to SSM
It uses Go AWS SDK to push secrets to SSM
ize secrets push goblin
ize secrets rm goblin
3. Build your goblin
application
_It runs a docker build with all require underneath.
ize build goblin
4. Deploy your goblin
application
It runs a simple logic of updating your task definitions to a new version (and rolling back in case ELB/ALB fails). Currently hazelops/ecs-deploy container is used.
ize deploy goblin
5. Bring up & Bring SSM tunnel
If you use a bastion host, you can establish a tunnel to access your private resources, like Postgres or Redis. This feature is using Amazon SSM and SSH tunneling underneath. Simple, yet effective.
ize tunnel up
ize tunnel down
Installation
To install the latest version via homebrew on MacOS:
2. Run the following commands:
brew tap hazelops/ize
brew install ize
More information on other platforms
Autocomplete:
MacOS & zsh:
Enable autocompletion
echo "autoload -U compinit; compinit" >> ~/.zshrc
Load autocompletion on every session
ize completion zsh > /usr/local/share/zsh/site-functions/_ize
More information on other platforms & shells