v1.171.0
Update `!store` YAML function. Introduce `atmos.Store` template function @aknysh (#1204)
what
- Update
!store
YAML function - Introduce
atmos.Store
template function - Add tests
- Update docs
why
!store
YAML function
In the !store
YAML function, allow using YQ Expressions to retrieve individual values
To retrieve individual values from complex types such as maps and lists, or do any kind of filtering or querying,
you can utilize YQ expressions.
For example:
- Retrieve the first item from a list
subnet_id1: !store <store_name> <stack> <component> <key> | query .private_subnet_ids[0]
- Read a key from a map
username: !store <store_name> <stack> <component> <key> | query .config_map.username
atmos.Store
template function
The atmos.Store
template function allows reading the values from a remote store (e.g. SSM Parameter Store, Artifactory, Redis, etc.) into Atmos stack manifests
For example, we can read the vpc_id
output of the vpc
component in the current stack from the SSM Parameter Store
configured in atmos.yaml
as ssm
simply by doing:
components:
terraform:
cluster:
vars:
vpc_id: '{{ atmos.Store "ssm" .stack "vpc" "vpc_id" }}'
To access the configuration of a component in a different stack, you can specify the stack name as the second argument.
For example, here we're reading the vpc_id
output of the vpc
component in the staging
stack:
components:
terraform:
cluster:
vars:
vpc_id: '{{ atmos.Store "ssm" "staging" "vpc" "vpc_id" }}'
Enhance Atmos CLI: Add Support for Custom Base Path and Config Paths @haitham911 (#1091)
what
- Introduce global command-line flags (--base-path, --config, and --config-path) to the Atmos CLI tool.
- If the --config or --config-path flag is changed, Atmos will load configurations only from the specified paths.
- The --config flag specifies an Atmos configuration file, such as dir1/config.yaml or dir2/config2.yaml, updating cli_config_path to dir1;dir2
- The --config-path flag specifies directories containing Atmos configuration files. files names should be one of (atmos.yaml, .atmos.yaml,atmos.yml, .atmos.yml), such as dir3/ or dir4/, updating cli_config_path to dir3;dir4
- Support handling multiple configurations from both --config and --config-path simultaneously
- Integrate embedded configuration support
why
- These changes make it easier to override Atmos settings dynamically—especially useful in automation, such as CI/CD pipelines and local testing. By specifying --config or --config-path
- Load alternate configurations without modifying global settings.
- Apply environment-specific settings for testing or deployments.
- Manage multiple Atmos configurations .
- Simplify local development by easily switching between configuration setups.
Refactor `go-getter` utility for better testability @samtholiya (#1146)
what
- Refactor
go-getter
utility for better testability github_token
,bitbucket_token
andgitlab_token
can now be set via atmos configuration
why
- Enables unit testing by allowing mocks
- Makes the file download mechanism extensible without modifying core logic