1.6.2.1. 环境变量

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

1.6.2.1.1. TF_LOG

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

$ export TF_LOG=TRACE

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

如果在使用Terraform的过程中遇到未知的错误并怀疑是Terraform或相关插件的bug,请设置TF_LOG级别后收集输出的日志并提交给相关人员。

有志于获取Terraform认证的读者请注意,该知识点近乎属于必考。

1.6.2.1.2. TF_LOG_PATH

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

$ export TF_LOG_PATH=./terraform.log

1.6.2.1.3. TF_INPUT

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

$ export TF_INPUT=0

1.6.2.1.4. 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" }'

1.6.2.1.5. 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子命令起作用。

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

1.6.2.1.6. TF_DATA_DIR

TF_DATA_DIR可以修改Terraform保存在每个工作目录下的数据的位置。一般来说,Terraform会把这些数据写入当前工作目录下的.terraform文件夹内,但这一位置可以通过设置TF_DATA_DIR来修改。

大部分情况下我们不应该设置该变量,但有时我们不得不这样做,比如默认路径下我们无权写入数据时。

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

1.6.2.1.7. TF_IN_AUTOMATION

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

1.6.2.1.8. TF_REGISTRY_DISCOVERY_RETRY

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

1.6.2.1.9. TF_REGISTRY_CLIENT_TIMEOUT

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

$ export TF_REGISTRY_CLIENT_TIMEOUT=15

1.6.2.1.10. TF_CLI_CONFIG_FILE

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

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

results matching ""

    No results matching ""