Skip to main content

Templates

Atmos supports Go templates in stack manifests, along with Sprig and Gomplate functions. Configure template processing and define datasources for dynamic configuration.

Configuration

Templates are configured in the templates section:

atmos.yaml

# https://pkg.go.dev/text/template
templates:
settings:
enabled: true
# https://masterminds.github.io/sprig
sprig:
enabled: true
# https://docs.gomplate.ca
# https://docs.gomplate.ca/functions
gomplate:
enabled: true
# Timeout in seconds to execute the datasources
timeout: 5
# https://docs.gomplate.ca/datasources
datasources:
# 'http' datasource
# https://docs.gomplate.ca/datasources/#using-file-datasources
ip:
url: "https://api.ipify.org?format=json"
# https://docs.gomplate.ca/datasources/#sending-http-headers
# https://docs.gomplate.ca/usage/#--datasource-header-h
headers:
accept:
- "application/json"
# 'file' datasources
# https://docs.gomplate.ca/datasources/#using-file-datasources
config-1:
url: "./config1.json"
config-2:
url: "file:///config2.json"

Settings

templates.settings.enabled

A boolean flag to enable/disable the processing of Go templates in Atmos stack manifests. If set to false, Atmos will not process Go templates in stack manifests.

templates.settings.sprig.enabled

A boolean flag to enable/disable Sprig Functions in Atmos stack manifests.

templates.settings.gomplate.enabled

A boolean flag to enable/disable Gomplate Functions and Gomplate Datasources in Atmos stack manifests.

templates.settings.gomplate.timeout

Timeout in seconds to execute Gomplate Datasources.

Datasources

The templates.settings.gomplate.datasources setting is a map of Gomplate Datasource definitions:

  • The keys of the map are the datasource names, which are used in Go templates in Atmos stack manifests
  • The values of the map are the datasource definitions

Datasource Schema

Each datasource definition supports the following properties:

url

The Datasource URL. Can be an HTTP URL, file path, or other supported URL schemes.

headers

A map of HTTP request headers for the http datasource. The keys of the map are the header names. The values of the map are lists of values for the header.

Using Datasources in Templates

terraform:
vars:
tags:
provisioned_by_ip: '{{ (datasource "ip").ip }}'
config1_tag: '{{ (datasource "config-1").tag }}'
config2_service_name: '{{ (datasource "config-2").service.name }}'

Available Template Functions

Atmos supports the following template functions and data sources:

tip

For more details, refer to Atmos Stack Manifest Templating

Function Conflicts

warning

Some functions are present in both Sprig and Gomplate.

For example, the env function has the same name in Sprig and Gomplate, but has different syntax and accepts different numbers of arguments.

If you use the env function from one templating engine and enable both Sprig and Gomplate, it will be invalid in the other templating engine, and an error will be thrown.

For this reason, you can use the templates.settings.sprig.enabled and templates.settings.gomplate.enabled settings to selectively enable/disable the Sprig and Gomplate functions.

See Also