Skip to main content

Stack Configuration

Stacks are YAML files that configure your environments. They define which components to deploy, with what settings, and how they relate to each other. This is where configuration lives—separate from your Terraform code.

Configuration Sections​

The reference sidebar follows YAML nesting. Literal labels are YAML keys; <name> represents a user-defined component name. For example, components → terraform → <name> → mocks corresponds to components.terraform.vpc.mocks for a component named vpc. Root-level toolchain sections such as terraform configure defaults; components.terraform.<name> configures an individual component.

A repeated field such as settings applies at the location shown by its parents in the tree.

Fields that support multiple scopes link to the same reference page from each supported location. Page scope tables explain restrictions, such as the subset of metadata fields permitted at the stack root. Colored dots indicate feature status: yellow for experimental and orange for deprecated; hover or focus a dot for its label.

Stack manifests support various configuration sections at different scopes:

SectionDescriptionScopes
nameExplicit stack name overrideStack manifest only
varsVariables passed to componentsGlobal, component-type, component
localsFile-scoped temporary variablesGlobal, component-type, component
envEnvironment variablesGlobal, component-type, component
settingsIntegrations and metadataGlobal, component-type, component
metadataComponent behavior and inheritanceGlobal (restricted subset), component
hooksLifecycle event handlersGlobal, component-type, component
commandOverride default executableComponent-type, component
backendTerraform state storageComponent-type, component
providersTerraform provider configurationComponent-type, component
authAuthentication configurationGlobal (atmos.yaml), component

Component Types​

Each component type has its own configuration options:

TypePurposeDocumentation
AnsibleConfiguration managementPlaybook automation
ContainerContainer servicesImage builds and persistent services
EmulatorLocal cloud APIsDevelopment and testing emulators
HelmKubernetes deploymentsNative Helm chart releases
HelmfileKubernetes deploymentsHelmfile release configuration
KubernetesKubernetes deploymentsManifest and Kustomize configuration
PackerMachine image buildingAMIs, VM images
TerraformInfrastructure as CodeCloud resources, networking, IAM

Composition and Reuse​

Build maintainable configurations using these patterns:

PatternDescription
ImportsInclude configuration from other files
CatalogsReusable component configurations
InheritanceInherit settings between components
OverridesOverride inherited configuration
MixinsComposable configuration snippets
dependenciesDefine tool and component dependencies

Sharing State​

Share data between components and stacks:

TopicDescription
Remote StateAccess Terraform state from other components
Share DataShare configuration between components

Describing Stacks​

Use atmos describe stacks to view the fully computed, deep-merged configuration of any stack. This is invaluable for debugging and understanding what configuration will actually be applied.

# View all stacks
atmos describe stacks

# Filter by specific stack
atmos describe stacks --stack plat-ue2-prod

# Filter by component and section
atmos describe stacks --components vpc --sections vars

# Output as JSON for processing with jq
atmos describe stacks --format json | jq '.["plat-ue2-prod"]'

The output shows the final resolved configuration after all imports, inheritance, and overrides have been applied. Use --sections to filter output to specific sections like vars, env, settings, metadata, backend, or workspace.