00:00.0 / 00:00.0
README.md2.8 KB
View on GitHubExample: Locals
Reduce repetition and build computed values using file-scoped locals.
Learn more about Locals.
What You'll See
- Basic locals — define reusable values within a file
- Dependency resolution — locals reference other locals, resolved via topological sort
- Context access — locals use
{{ .settings.X }},{{ .vars.X }}from the same file - Sprig functions — pipe syntax like
{{ .locals.namespace | upper }} - Complex values — maps with templates for resource tags
- Multiple components — the same locals shared across components in a file
- File-scoped isolation — dev.yaml and prod.yaml have independent locals
Try It
cd examples/locals# View resolved locals for the dev stackatmos describe locals -s dev# View resolved locals for a specific componentatmos describe locals myapp -s dev# See how locals flow into component varsatmos describe component myapp -s dev# Compare dev vs prod (same patterns, different values)atmos describe component myapp -s prod# Worker component appends a suffix to localsatmos describe component myapp-worker -s dev
Features Demonstrated
1. Basic Locals and References
locals:namespace: acmeenvironment: developmentname_prefix: "{{ .locals.namespace }}-{{ .locals.environment }}"
Locals are resolved in dependency order — name_prefix waits for namespace and environment.
2. Settings and Vars Access
settings:version: v1vars:stage: devlocals:app_version: "{{ .settings.version }}" # → "v1"stage_name: "{{ .vars.stage }}" # → "dev"
3. Sprig Functions
locals:namespace_upper: '{{ .locals.namespace | upper }}' # → "ACME"
4. Complex Values (Maps)
locals:default_tags:Namespace: "{{ .locals.namespace }}"Environment: "{{ .locals.environment }}"Team: "{{ .settings.team }}"ManagedBy: Atmos
5. File-Scoped Isolation
Each stack file has its own locals. Even though both dev.yaml and prod.yaml
define namespace: acme, they are completely separate — changing one never
affects the other. Locals never propagate across file boundaries via imports.
Key Files
| File | Purpose |
|---|---|
stacks/deploy/dev.yaml | Dev stack: all locals features |
stacks/deploy/prod.yaml | Prod stack: same patterns, different values |
components/terraform/myapp/main.tf | Mock Terraform component |