Terraform环境变量

  1. TF_LOG
  2. TF_LOG_PATH
  3. TF_INPUT
  4. TF_VAR_name
  5. TF_CLI_ARGS以及TF_CLI_ARGS_name
  6. TF_DATA_DIR
  7. TF_IN_AUTOMATION
  8. TF_REGISTRY_DISCOVERY_RETRY
  9. TF_REGISTRY_CLIENT_TIMEOUT
  10. TF_CLI_CONFIG_FILE

Terraform使用一系列的环境变量来定制化各方面的行为,如果只是想简单使用Terraform,并不需要设置这些环境变量;但它们可以在一些不常见的场景下改变Terraform的默认行为,例如出于调试目的修改输出日志的级别。

TF_LOG

该环境变量可以设定Terraform内部日志的输出级别,例如:

$ export TF_LOG=TRACE

Terraform日志级别有TRACEDEBUGINFOWARNERROR,TRACE包含的信息最多也最冗长,如果TF_LOG被设定为这五级以外的值时Terraform会默认使用TRACE

TF_LOG_PATH

该环境变量可以设定日志文件保存的位置。
注意,如果TF_LOG_PATH被设置了,那么TF_LOG也必须被设置。举例来说,想要始终把日志输出到当前工作目录,可以这样设置:

$ export TF_LOG_PATH=./terraform.log

TF_INPUT

该环境变量设置为”false”或”0”时,等同于运行Terraform相关命令行命令时添加了参数-input=false。如果想在自动化环境下避免Terraform通过命令行的交互式提示要求给定输入变量的值而是直接报错时(无default值的输入变量,无法通过任何途径获得值)可以设置该环境变量:

$ export TF_INPUT=0

TF_VAR_name

可以通过设置名为TF_VAR_name的环境变量来为名为”name”的输入变量赋值:

$ 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" }'

TF_CLI_ARGS以及TF_CLI_ARGS_name

TF_CLI_ARGS的值指定了附加给命令行的额外参数,这使得在自动化CI环境下可以轻松定制Terraform的默认行为。
该参数的值会被直接插入在子命令后(如plan)以及通过命令行指定的参数之前,这种做法确保了环境变量参数优先于通过命令行传递的参数。
例如,执行这样的命令:TF_CLI_ARGS="-input=false" terraform apply -force ,它等价于手工执行terraform apply -input=false -force
TF_CLI_ARGS变量影响所有的Terraform命令,如果只想影响某个特定的子命令,可以使用TF_CLI_ARGS_name变量。例如:TF_CLI_ARGS_plan="-refresh=false"就只会针对plan子命令起作用。

该环境变量的值会与通过命令行传入的参数一样被解析,可以在值里使用单引号和双引号来定义字符串,多个参数之间以空格分隔。

TF_DATA_DIR

TF_DATA_DIR可以修改Terraform保存在每个工作目录下的数据的位置。
一般来说,Terraform会把这些数据写入当前工作目录下的.terraform文件夹内,但这一位置可以通过设置TF_DATA_DIR来修改。
大部分情况下不应该设置该变量,但有时可能不得不这样做,比如默认路径下无权写入数据时。

该数据目录被用来保存下一次执行任意命令时需要读取的数据,所以必须被妥善保存,并确保所有的Terraform命令都可以一致地读写它,否则Terraform会找不到Provider插件、模块代码以及其他文件。

TF_IN_AUTOMATION

如果该变量被设置为非空值,Terraform会意识到自己运行在一个自动化环境下,从而调整自己的输出以避免给出关于该执行什么子命令的建议,这可以使得输出更加一致且减少非必要的信息量。

TF_REGISTRY_DISCOVERY_RETRY

该变量定义了尝试从registry拉取插件或模块代码遇到错误时的重试次数。

TF_REGISTRY_CLIENT_TIMEOUT

该变量定义了发送到registry连接请求的超时时间,默认值为10秒。
可以这样设置超时:

$ export TF_REGISTRY_CLIENT_TIMEOUT=15

TF_CLI_CONFIG_FILE

该变量设定了Terraform命令行配置文件的位置:

$ export TF_CLI_CONFIG_FILE="$HOME/.terraformrc-custom"

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,在下面评论区告诉我^_^^_^