Value Proposition๏
What strata does๏
Generates deployment artifacts from YAML configuration โ workspaces, modules, variables, providers, and backends composed into ready-to-apply files for your provisioner of choice.
Resolves secrets at build time โ pulls values from Key Vault, Bitwarden, or environment variables and injects them into build output without ever committing secrets to Git.
Merges configuration across environments โ one set of YAML definitions, multiple environments (dev/staging/prod) with layered overrides.
Orchestrates deployment stages โ runs provisioners in the correct order across stages, with drift detection (
strata build plan) built in.
Terraform is the primary example throughout this document, but the same architecture applies to any provisioner strata supports โ Helm, Ansible, Pulumi, or others. The build/deploy pipeline is provisioner-agnostic: strata generates artifacts and calls the tool via subprocess. Swap the provisioner, keep the workflow.
How it helps๏
Config sprawl๏
Infrastructure teams copy-paste .tfvars files between environments, creating drift and inconsistency. strata eliminates this with a single source of truth in YAML, merged per-environment at build time.
Secret management๏
Hardcoded secrets in variable files or CI scripts are a compliance liability. strata resolves secrets from pluggable backends (Azure Key Vault, Bitwarden, HashiCorp Vault) and writes them into the build output only โ never into source control.
Environment drift๏
When environments diverge silently, production surprises follow. strata build plan compares the current build output against the last-applied state, surfacing drift before it becomes an incident.
Deployment orchestration๏
Multi-stage deployments (infra before apps, networking before compute) require manual ordering or brittle scripts. strataโs deployment manifests declare stage order and execute them sequentially with proper dependency tracking.
What strata owns vs. what it doesnโt๏
Aspect |
strata owns |
strata does NOT touch |
|---|---|---|
Configuration source |
YAML files ( |
Your Terraform modules ( |
Build output |
|
|
State |
Nothing โ strata generates a |
|
Execution |
Calls |
No custom providers, no proprietary API calls |
Workspace metadata |
|
Git history, CI/CD pipelines, infrastructure itself |
The Escape Hatch๏
strata does not generate Terraform state. It does not use custom providers. It does not wrap Terraform in a proprietary runtime. The build output is plain Terraform โ files you can read, copy, and run without strata installed.
Where the generated Terraform lives๏
strata build run --file deploy/deploy-prd.yaml
After this command, your Terraform is at:
.strata/build/deploy-prd/
โโโ infra/
โ โโโ main.tf
โ โโโ variables.tf
โ โโโ terraform.tfvars.json
โ โโโ providers.tf
โ โโโ backend.tf
โโโ apps/
โโโ main.tf
โโโ variables.tf
โโโ terraform.tfvars.json
โโโ providers.tf
โโโ backend.tf
Walking away๏
If strata doesnโt fit your workflow, hereโs how to leave:
Run
strata build runone last time to generate current artifacts.Copy
.strata/build/<deployment>/<stage>/to wherever you keep Terraform code.Run
terraform init && terraform planin that directory. It works โ thereโs nothing strata-specific in those files.Delete
.strata/if you like. Your state backend, your modules, your infrastructure โ all untouched.
Your Terraform state was never inside strata. It lived in your configured backend (Azure Storage, S3, GCS, Terraform Cloud) the entire time. Removing strata doesnโt orphan state or require migration.
No lock-in by design๏
No custom providers โ standard
hashicorp/azurerm,hashicorp/aws, Helm charts, Ansible playbooks โ whatever your provisioner uses natively.No proprietary state format โ state is standard Terraform state (or Helm release history, Ansible facts) in your backend.
No runtime dependency โ the build output is self-contained.
terraform apply,helm upgrade,ansible-playbookโ they work without strata installed.No phone-home โ strata is a local CLI tool with no SaaS component.
Provisioner-agnostic โ Terraform is the most common target, but Helm and Ansible follow the same build โ deploy โ diff lifecycle. The architecture doesnโt assume a single tool.
We want you to stay because strata saves you time and reduces errors โ not because leaving is hard.