Managed Terraform State
Zeet will generate and manage Terraform state for you by default.
Traditionally, terraform projects are separated into consumable modules
and deployable modules
.
A consumable module
is a module that is often imported by other modules, technically all modules are consumable modules.
For example https://github.com/terraform-aws-modules/terraform-aws-vpc is one of the most widely used consumable module.
A deployable module
is a module that contains state backend definition and is used with terraform plan/apply
. Modules without state definition are not deployable.
For example https://github.com/hashicorp/demo-terraform-201/blob/master/3-store-state/use-state/main.tf
However, there is also a third type of module that is meant to be deployable but does not have state backend definition.
For example https://github.com/terraform-aws-modules/terraform-aws-vpc/blob/master/examples/simple-vpc/
In order to deploy such module, infrastructure operator needs to manually recreate the already complete module into a new git repository with state configuration.
This practice creates a lot of overhead when you only need the unmodified source module, and when you want to keep up with upstream changes.
What we created at Zeet is a simple way to deploy any consumable module
with auto-generated and managed state.
Zeet Terraform State
Zeet will automatically provision a terraform state backend powered by AWS S3 when you deploy a consumable terraform module into an AWS account managed by Zeet.
The state file and all secrets will stay in your cloud account and only accessible to developers with AWS S3 IAM permissions.