Pattern: Change a Value Across All Environments
Audience: Operator who needs to change a configuration value (RAM, disk size, feature flag, variable) and apply it everywhere consistently.
The layering model
strata merges configuration in this order (later wins):
workspace variables → environment variables → deployment variables
(base) (override) (final)
Where you make a change depends on the scope you want:
Scope |
Where to edit |
Example |
|---|---|---|
All environments |
Workspace ( |
Bump RAM on all worker VMs |
One environment only |
Environment ( |
Enable debug logging in staging only |
One deployment only |
Deployment ( |
Override a value for a specific deploy run |
Recipe: Change a resource property everywhere
Scenario: Bump worker VM RAM from 2048 MB to 4096 MB across all environments.
Since RAM is defined in the resource file (shared by all deployments), edit it once:
# stack/vm-worker.yaml
spec:
configuration:
cpu_cores: 1
ram_mb: 4096 # ← changed from 2048
Then validate and plan ALL deployments:
strata validate --file deploy/deploy-prd.yaml
strata validate --file deploy/deploy-stg.yaml
strata build plan --file deploy/deploy-prd.yaml
strata build plan --file deploy/deploy-stg.yaml
The plan shows the RAM change propagating to every environment that uses this resource.
Recipe: Change a variable in all environments
Scenario: Add a new variable LOG_RETENTION_DAYS with value 30 for all environments.
Add it to the workspace (the base layer everyone inherits):
# stack/ws-platform.yaml
spec:
variables:
- key: LOG_RETENTION_DAYS
store: constant
value: "30"
If one environment needs a different value, override in that environment file:
# envs/env-stg.yaml
spec:
variables:
- key: LOG_RETENTION_DAYS
store: constant
value: "7" # staging keeps logs for less time
The variable resolution order ensures staging gets 7 while production gets the workspace default 30.
Recipe: Change a variable in only one environment
Scenario: Enable debug mode in staging but not production.
Only edit the staging environment file:
# envs/env-stg.yaml
spec:
variables:
- key: DEBUG_MODE
store: constant
value: "true"
Production doesn’t have this variable defined in its environment file, so it inherits the workspace default (or the variable simply doesn’t exist in production — your Terraform can use a default).
Verification workflow
After making cross-environment changes:
# 1. Validate all affected deployments
strata validate --file deploy/deploy-prd.yaml
strata validate --file deploy/deploy-stg.yaml
# 2. Build plan — see what would change in each environment
strata build plan --file deploy/deploy-prd.yaml
strata build plan --file deploy/deploy-stg.yaml
# 3. Commit the change
git add -A && git commit -m "Bump worker RAM to 4096 MB"
# 4. Deploy (staging first, then production)
strata deploy run --file deploy/deploy-stg.yaml
strata deploy run --file deploy/deploy-prd.yaml
Tips
Use
strata build planbefore deploying — it shows the exact infrastructure changes that would apply.Commit config changes before deploying — so the git history reflects what was deployed and when.
Deploy staging first — catch issues before they hit production.
One change per commit — makes
git loguseful for debugging later.