Workdir Provisioning
provision.workdir creates an isolated working directory for each component instance under .workdir/<componentType>/<stack>-<componentName>/. The component source is staged into this directory and all toolchain commands execute there, enabling concurrent execution and just-in-time source provisioning without .terraform/, lockfile, or generated-varfile collisions.
Schema
provision.workdir.enabledCreate an isolated working directory for each component instance.
- Type:
boolean - Default:
false - Applies to: Terraform, Helmfile, Packer, and Ansible components
- Type:
Configuration
Enable workdir provisioning for any supported toolchain:
stacks/catalog/_defaults.yaml
Directory Layout
When workdir provisioning is enabled, Atmos creates a per-component-instance directory under .workdir/ and runs all toolchain commands there. Each instance gets its own .terraform/, varfiles, and state cache.
.workdir/
├── terraform/
│ └── prod-ue1-vpc/ # <stack>-<componentName>
│ ├── .terraform/
│ ├── .atmos/metadata.json
│ └── ... (component source)
└── helmfile/
└── prod-ue1-nginx/
└── ...
The .workdir/ directory is created at runtime and should be added to .gitignore. It is not used by atmos describe affected for change detection — that command tracks the source files in components/<type>/<name>/, not the runtime workdir.
Toolchain-Level Defaults
Apply workdir provisioning to every component of a toolchain:
stacks/orgs/acme/plat/dev/_defaults.yaml
Component-Level Overrides
Opt a single component out of a toolchain or global default by setting enabled: false:
stacks/orgs/acme/plat/dev/us-east-1.yaml
Global Defaults
Set workdir defaults globally for every stack and component via the settings.provision block in atmos.yaml:
atmos.yaml
settings.provision.workdir.enabled- Global default for
provision.workdir.enabled. Toolchain-level and component-level settings still override this. settings.provision.workdir.ttl- Time-to-live for workdirs (e.g.,
"7d","24h","weekly"). Workdirs not accessed within this duration become candidates for cleanup byatmos terraform workdir clean --expired.
For the full reference of the global settings page, see Settings: Provision Defaults.
Managing Workdirs
Use the atmos terraform workdir commands to inspect and clean up workdirs:
| Command | Purpose |
|---|---|
atmos terraform workdir list | List all workdirs |
atmos terraform workdir show <component> -s <stack> | Show details for a specific workdir |
atmos terraform workdir clean --expired --ttl=7d | Remove workdirs not accessed within the TTL |
atmos terraform workdir clean --all | Remove every workdir (forces re-provisioning on next run) |
Related
- Backend Provisioning — The other half of the
provision:block - Settings: Provision Defaults — Global workdir defaults in
atmos.yaml atmos terraform workdir— CLI commands for managing workdirs- Terraform CLI Configuration —
auto_provision_workdir_for_outputsand other global Terraform settings