terraform
Description
Complete YAML Schema
kind: Module
# The type of this module.
type:
# The name of this module.
name:
# Specify how to build the module. Note that plugins may define additional keys on this object.
build:
# A list of modules that must be built before this module is built.
dependencies:
- # Module name to build ahead of this module.
name:
# Specify one or more files or directories to copy from the built dependency to this module.
copy:
- # POSIX-style path or filename of the directory or file(s) to copy to the target.
source:
# POSIX-style path or filename to copy the directory or file(s), relative to the build directory.
# Defaults to the same as source path.
target:
# Maximum time in seconds to wait for build to finish.
timeout: 600
# If set to true, Garden will run the build command, services, tests, and tasks in the module source directory,
# instead of in the Garden build directory (under .garden/build/<module-name>).
#
# Garden will therefore not stage the build for local modules. This means that include/exclude filters
# and ignore files are not applied to local modules, except to calculate the module/action versions.
#
# If you use use `build.dependencies[].copy` for one or more build dependencies of this module, the copied files
# will be copied to the module source directory (instead of the build directory, as is the default case when
# `local = false`).
#
# Note: This maps to the `buildAtSource` option in this module's generated Build action (if any).
local: false
# A description of the module.
description:
# Set this to `true` to disable the module. You can use this with conditional template strings to disable modules
# based on, for example, the current environment or other variables (e.g. `disabled: ${environment.name == "prod"}`).
# This can be handy when you only need certain modules for specific environments, e.g. only for development.
#
# Disabling a module means that any services, tasks and tests contained in it will not be build, deployed or run.
#
# If you disable the module, and its services, tasks or tests are referenced as _runtime_ dependencies, Garden will
# automatically ignore those dependency declarations. Note however that template strings referencing the module's
# service or task outputs (i.e. runtime outputs) will fail to resolve when the module is disabled, so you need to make
# sure to provide alternate values for those if you're using them, using conditional expressions.
disabled: false
# Specify a list of POSIX-style paths or globs that should be regarded as the source files for this module. Files that
# do *not* match these paths or globs are excluded when computing the version of the module, when responding to
# filesystem watch events, and when staging builds.
#
# Note that you can also _exclude_ files using the `exclude` field or by placing `.gardenignore` files in your source
# tree, which use the same format as `.gitignore` files. See the [Configuration Files
# guide](https://docs.garden.io/cedar-0.14/using-garden/configuration-overview#including-excluding-files-and-directories)
# for details.
#
# Also note that specifying an empty list here means _no sources_ should be included.
include:
# Specify a list of POSIX-style paths or glob patterns that should be excluded from the module. Files that match these
# paths or globs are excluded when computing the version of the module, when responding to filesystem watch events,
# and when staging builds.
#
# Note that you can also explicitly _include_ files using the `include` field. If you also specify the `include`
# field, the files/patterns specified here are filtered from the files matched by `include`. See the [Configuration
# Files
# guide](https://docs.garden.io/cedar-0.14/using-garden/configuration-overview#including-excluding-files-and-directories)
# for details.
#
# Unlike the `scan.exclude` field in the project config, the filters here have _no effect_ on which files and
# directories are watched for changes. Use the project `scan.exclude` field to affect those, if you have large
# directories that should not be watched for changes.
exclude:
# A remote repository URL. Currently only supports git servers. Must contain a hash suffix pointing to a specific
# branch or tag, with the format: <git remote url>#<branch|tag>
#
# Garden will import the repository source code into this module, but read the module's config from the local
# garden.yml file.
repositoryUrl:
# When false, disables pushing this module to remote registries via the publish command.
allowPublish: true
# A list of files to write to the module directory when resolving this module. This is useful to automatically
# generate (and template) any supporting files needed for the module.
generateFiles:
- # POSIX-style filename to read the source file contents from, relative to the path of the module (or the
# ConfigTemplate configuration file if one is being applied).
# This file may contain template strings, much like any other field in the configuration.
sourcePath:
# POSIX-style filename to write the resolved file contents to, relative to the path of the module source directory
# (for remote modules this means the root of the module repository, otherwise the directory of the module
# configuration).
#
# Note that any existing file with the same name will be overwritten. If the path contains one or more
# directories, they will be automatically created if missing.
targetPath:
# By default, Garden will attempt to resolve any Garden template strings in source files. Set this to false to
# skip resolving template strings. Note that this does not apply when setting the `value` field, since that's
# resolved earlier when parsing the configuration.
resolveTemplates: true
# The desired file contents as a string.
value:
# A map of variables to use when applying the stack. You can define these here or you can place a
# `terraform.tfvars` file in the working directory root.
#
# If you specified `variables` in the `terraform` provider config, those will be included but the variables
# specified here take precedence.
variables:
# Specify a path (relative to the module root) to a file containing variables, that we apply on top of the
# module-level `variables` field.
#
# The format of the files is determined by the configured file's extension:
#
# * `.yaml`/`.yml` - YAML. The file must consist of a YAML document, which must be a map (dictionary). Keys may
# contain any value type. YAML format is used by default.
# * `.env` - Standard "dotenv" format, as defined by [dotenv](https://github.com/motdotla/dotenv#rules).
# * `.json` - JSON. Must contain a single JSON _object_ (not an array).
#
# _NOTE: The default varfile format was changed to YAML in Garden v0.13, since YAML allows for definition of nested
# objects and arrays._
#
# To use different module-level varfiles in different environments, you can template in the environment name
# to the varfile name, e.g. `varfile: "my-module.${environment.name}.env` (this assumes that the corresponding
# varfiles exist).
varfile:
# The names of any services that this service depends on at runtime, and the names of any tasks that should be
# executed before this service is deployed.
# You may also depend on Deploy and Run actions, but please note that you cannot reference those actions in template
# strings.
dependencies: []
# If set to true, Garden will run `terraform destroy` on the stack when calling `garden delete namespace` or `garden
# delete deploy <deploy name>`.
allowDestroy: false
# If set to true, Garden will automatically run `terraform apply -auto-approve` when the stack is not
# up-to-date. Otherwise, a warning is logged if the stack is out-of-date, and an error thrown if it is missing
# entirely.
#
# **NOTE: This is not recommended for production, or shared environments in general!**
#
# Defaults to the value set in the provider config.
autoApply: null
# Specify the path to the working directory root—i.e. where your Terraform files are—relative to the config directory.
root: .
# The version of Terraform to use. Defaults to the version set in the provider config.
# Set to `null` to use whichever version of `terraform` that is on your PATH.
version:
# Use the specified Terraform workspace.
workspace:
# Configure the Terraform backend.
#
# The key-value pairs defined here are set as the `-backend-config` options when Garden
# runs `terraform init`.
#
# This can be used to dynamically set a Terraform backend depending on the environment.
#
# If Garden sees that the backend has changes, it'll re-initialize Terraform and set the new values.
backendConfig:Configuration Keys
kind
kindType
Allowed Values
Default
Required
type
typeType
Required
name
nameType
Required
build
buildType
Default
Required
build.dependencies[]
build.dependencies[]Type
Default
Required
build.dependencies[].name
build.dependencies[].nameType
Required
build.dependencies[].copy[]
build.dependencies[].copy[]Type
Default
Required
build.dependencies[].copy[].source
build.dependencies[].copy[].sourceType
Required
build.dependencies[].copy[].target
build.dependencies[].copy[].targetType
Required
build.timeout
build.timeoutType
Default
Required
local
localType
Default
Required
description
descriptionType
Required
disabled
disabledType
Default
Required
include[]
include[]Type
Required
exclude[]
exclude[]Type
Required
repositoryUrl
repositoryUrlType
Required
allowPublish
allowPublishType
Default
Required
generateFiles[]
generateFiles[]Type
Default
Required
generateFiles[].sourcePath
generateFiles[].sourcePathType
Required
generateFiles[].targetPath
generateFiles[].targetPathType
Required
generateFiles[].resolveTemplates
generateFiles[].resolveTemplatesType
Default
Required
generateFiles[].value
generateFiles[].valueType
Required
variables
variablesType
Required
varfile
varfileType
Required
dependencies[]
dependencies[]Type
Default
Required
allowDestroy
allowDestroyType
Default
Required
autoApply
autoApplyType
Default
Required
root
rootType
Default
Required
version
versionType
Required
workspace
workspaceType
Required
backendConfig
backendConfigType
Required
Outputs
Module Outputs
${modules.<module-name>.buildPath}
${modules.<module-name>.buildPath}Type
${modules.<module-name>.name}
${modules.<module-name>.name}Type
${modules.<module-name>.path}
${modules.<module-name>.path}Type
${modules.<module-name>.var.*}
${modules.<module-name>.var.*}Type
Default
${modules.<module-name>.var.<variable-name>}
${modules.<module-name>.var.<variable-name>}Type
${modules.<module-name>.version}
${modules.<module-name>.version}Type
Service Outputs
${runtime.services.<service-name>.version}
${runtime.services.<service-name>.version}Type
Task Outputs
${runtime.tasks.<task-name>.version}
${runtime.tasks.<task-name>.version}Type
Last updated
Was this helpful?

