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 (workspace, environment, deployment, configuration)

Your Terraform modules (.tf files you wrote)

Build output

.strata/build/<deployment>/<stage>/ โ€” generated .tf, .tfvars.json

.terraform/ directory (provider cache, plugin binaries)

State

Nothing โ€” strata generates a backend.tf that points to your state backend

terraform.tfstate, remote state in Azure/S3/GCS

Execution

Calls terraform init/plan/apply via subprocess

No custom providers, no proprietary API calls

Workspace metadata

.strata/solution.json, .strata/cli.yaml, build logs

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:

  1. Run strata build run one last time to generate current artifacts.

  2. Copy .strata/build/<deployment>/<stage>/ to wherever you keep Terraform code.

  3. Run terraform init && terraform plan in that directory. It works โ€” thereโ€™s nothing strata-specific in those files.

  4. 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.