Common Errors
Common Mistakes
- Running out of date version of
atmos
with newer configuration parameters - An
atmos.yaml
with incorrectstacks.stack_name
pattern (often due to copy pasta)
Common Errors
Here are some common errors that can come up.
Error: stack name pattern must be provided
stack name pattern must be provided in 'stacks.name_pattern' config or 'ATMOS_STACKS_NAME_PATTERN' ENV variable
This means that you are probably missing a section like this in your atmos.yml
. See the instructions on CLI Configuration for more details.
stacks:
name_pattern: "{tenant}-{environment}-{stage}"
Error: The stack name pattern ... does not have a tenant defined
The stack name pattern '{tenant}-{environment}-{stage}' specifies 'tenant', but the stack ue1-prod does not have a tenant defined
This means that your name_pattern
declares a tenant
is required, but not specified in the Stack configurations. Either specify a tenant
in
your vars
for the Stack configuration, or remove the {tenant}
from the name_pattern
.
stacks:
name_pattern: "{tenant}-{environment}-{stage}"
Error: depends_on expected a map, got slice
decoding: depends_on expected a map, got slice
The depends_on
functionality originally existed only under settings.spacelift.depends_on
and was a list of other components that the current
component depends on.
We have since updated depends_on
to be more generic and be directly under settings.depends_on
(so it can also be used in GitHub Actions and other
tools).
The updated key is now a map (rather than a list). If you see this error, it means that someone put a depends_on
block directly under settings
but added it as a list (rather than a map as the new config requires).
The solution is to move it under settings.spacelift.depends_on
(legacy, deprecated, not recommended) or update the dependencies to be a map.
components:
terraform:
top-level-component2:
metadata:
component: "top-level-component1"
settings:
spacelift:
workspace_enabled: false
depends_on:
1:
# If the `context` (namespace, tenant, environment, stage) is not provided,
# the `component` is from the same Atmos stack as this component
component: "test/test-component"
2:
# If the `context` (namespace, tenant, environment, stage) is not provided,
# the `component` is from the same Atmos stack as this component
component: "test/test2/test-component-2"
3:
file: "tests/fixtures/scenarios/complete/components/terraform/mixins/introspection.mixin.tf"
4:
folder: "tests/fixtures/scenarios/complete/components/helmfile/infra/infra-server"
vars:
enabled: true
For more information, refer to:
Error: A change in the backend configuration has been detected, which may require migrating existing state
A change in the backend configuration has been detected, which may require migrating existing state
The Terraform/OpenTofu error means Terraform noticed that your backend configuration (the section in your code that defines where and how Terraform stores state) has changed compared to what’s currently in use..
Why it happens
Terraform keeps its state in a backend (for example, S3, local, remote, Terraform Cloud, etc.). If you update the backend configuration in your code — for example:
- Switching from local to s3
- Changing the bucket, key, or region for an S3 backend
- Modifying a prefix or workspace config in Terraform Cloud
- Adjusting encryption or locking settings
- Terraform detects that the state might need to be migrated from the old backend to the new one.
What Terraform expects
When this happens, Terraform doesn’t automatically move state — it prompts you to confirm migration. Typically, you’ll see a message like:
Do you want to copy existing state to the new backend?
Enter "yes" to copy and "no" to start with an empty state.
If you type yes
, Terraform migrates the state (so you keep your existing resources).
If you type no
, Terraform initializes a fresh, empty state in the new backend (dangerous unless intentional).
How to resolve
In atmos.yaml
, set components.terraform.init_run_reconfigure
to true
:
components:
terraform:
# Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_INIT_RUN_RECONFIGURE' ENV var, or '--init-run-reconfigure' command-line argument
init_run_reconfigure: true
This will tell Atmos to run terraform init -reconfigure
when executing Terraform commands.
The -reconfigure
option disregards any existing backend configuration and configures a new backend,
preventing migration of any existing state.
For more information, refer to: