123 lines
4.6 KiB
Plaintext
123 lines
4.6 KiB
Plaintext
---
|
|
page_title: Environment Variables - 0.11 Configuration Language
|
|
description: >-
|
|
Terraform uses different environment variables that can be used to configure
|
|
various aspects of how Terraform behaves. this section documents those
|
|
variables, their potential values, and how to use them.
|
|
---
|
|
|
|
# Environment Variables
|
|
|
|
-> **Note:** This page is about Terraform 0.11 and earlier. For Terraform 0.12
|
|
and later, see
|
|
[Commands: Environment Variables](/cli/config/environment-variables).
|
|
|
|
## TF_LOG
|
|
|
|
If set to any value, enables detailed logs to appear on stderr which is useful for debugging. For example:
|
|
|
|
```shell
|
|
export TF_LOG=TRACE
|
|
```
|
|
|
|
To disable, either unset it or set it to empty. When unset, logging will default to stderr. For example:
|
|
|
|
```shell
|
|
export TF_LOG=
|
|
```
|
|
|
|
For more on debugging Terraform, check out the section on [Debugging](/internals/debugging).
|
|
|
|
## TF_LOG_PATH
|
|
|
|
This specifies where the log should persist its output to. Note that even when `TF_LOG_PATH` is set, `TF_LOG` must be set in order for any logging to be enabled. For example, to always write the log to the directory you're currently running terraform from:
|
|
|
|
```shell
|
|
export TF_LOG_PATH=./terraform.log
|
|
```
|
|
|
|
For more on debugging Terraform, check out the section on [Debugging](/internals/debugging).
|
|
|
|
## TF_INPUT
|
|
|
|
If set to "false" or "0", causes terraform commands to behave as if the `-input=false` flag was specified. This is used when you want to disable prompts for variables that haven't had their values specified. For example:
|
|
|
|
```shell
|
|
export TF_INPUT=0
|
|
```
|
|
|
|
## TF_MODULE_DEPTH
|
|
|
|
When given a value, causes terraform commands to behave as if the `-module-depth=VALUE` flag was specified. By setting this to 0, for example, you enable commands such as [plan](/cli/commands/plan) and [graph](/cli/commands/graph) to display more compressed information.
|
|
|
|
```shell
|
|
export TF_MODULE_DEPTH=0
|
|
```
|
|
|
|
For more information regarding modules, see [Configuration Language: Modules](/configuration/modules).
|
|
|
|
## TF_VAR_name
|
|
|
|
Environment variables can be used to set variables. The environment variables must be in the format `TF_VAR_name` and this will be checked last for a value. For example:
|
|
|
|
```shell
|
|
export TF_VAR_region=us-west-1
|
|
export TF_VAR_ami=ami-049d8641
|
|
export TF_VAR_alist='[1,2,3]'
|
|
export TF_VAR_amap='{ foo = "bar", baz = "qux" }'
|
|
```
|
|
|
|
For more on how to use `TF_VAR_name` in context, check out the section on [Variable Configuration](/language/configuration-0-11/variables).
|
|
|
|
## TF_CLI_ARGS and TF_CLI_ARGS_name
|
|
|
|
The value of `TF_CLI_ARGS` will specify additional arguments to the
|
|
command-line. This allows easier automation in CI environments as well as
|
|
modifying default behavior of Terraform on your own system.
|
|
|
|
These arguments are inserted directly _after_ the subcommand
|
|
(such as `plan`) and _before_ any flags specified directly on the command-line.
|
|
This behavior ensures that flags on the command-line take precedence over
|
|
environment variables.
|
|
|
|
For example, the following command: `TF_CLI_ARGS="-input=false" terraform apply -force`
|
|
is the equivalent to manually typing: `terraform apply -input=false -force`.
|
|
|
|
The flag `TF_CLI_ARGS` affects all Terraform commands. If you specify a
|
|
named command in the form of `TF_CLI_ARGS_name` then it will only affect
|
|
that command. As an example, to specify that only plans never refresh,
|
|
you can set `TF_CLI_ARGS_plan="-refresh=false"`.
|
|
|
|
The value of the flag is parsed as if you typed it directly to the shell.
|
|
Double and single quotes are allowed to capture strings and arguments will
|
|
be separated by spaces otherwise.
|
|
|
|
## TF_DATA_DIR
|
|
|
|
`TF_DATA_DIR` changes the location where Terraform keeps its
|
|
per-working-directory data, such as the current remote backend configuration.
|
|
|
|
By default this data is written into a `.terraform` subdirectory of the
|
|
current directory, but the path given in `TF_DATA_DIR` will be used instead
|
|
if non-empty.
|
|
|
|
In most cases it should not be necessary to set this variable, but it may
|
|
be useful to do so if e.g. the working directory is not writable.
|
|
|
|
The data directory is used to retain data that must persist from one command
|
|
to the next, so it's important to have this variable set consistently throughout
|
|
all of the Terraform workflow commands (starting with `terraform init`) or else
|
|
Terraform may be unable to find providers, modules, and other artifacts.
|
|
|
|
## TF_SKIP_REMOTE_TESTS
|
|
|
|
This can be set prior to running the unit tests to opt-out of any tests
|
|
requiring remote network connectivity. The unit tests make an attempt to
|
|
automatically detect when connectivity is unavailable and skip the relevant
|
|
tests, but by setting this variable you can force these tests to be skipped.
|
|
|
|
```shell
|
|
export TF_SKIP_REMOTE_TESTS=1
|
|
make test
|
|
```
|