环境变量
OpenTofu 使用一些环境变量来自定义其行为的各个方面。使用 OpenTofu 时,这些环境变量都不是必需的,但它们可用于在特殊情况下更改 OpenTofu 的某些默认行为,或增加输出详细程度以进行调试。
TF_LOG
启用详细日志显示在 stderr 上,这对于调试很有用。例如
export TF_LOG=trace
要禁用,请取消设置它,或将其设置为 off
。例如
export TF_LOG=off
有关 OpenTofu 调试的更多信息,请查看关于 调试 的部分。
TF_LOG_PATH
这指定了日志应将其输出持久化到的位置。请注意,即使设置了 TF_LOG_PATH
,也必须设置 TF_LOG
才能启用任何日志记录。例如,要始终将日志写入当前运行 tofu 的目录
export TF_LOG_PATH=./terraform.log
有关 OpenTofu 调试的更多信息,请查看关于 调试 的部分。
TF_INPUT
如果设置为“false”或“0”,则会导致 tofu 命令的行为与指定了 -input=false
标志一样。当您想要禁用对未指定值的变量的提示时,可以使用此选项。例如
export TF_INPUT=0
TF_VAR_name
环境变量可用于设置变量。环境变量必须采用 TF_VAR_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_VAR_name
的更多信息,请查看关于 变量配置 的部分。
TF_CLI_ARGS 和 TF_CLI_ARGS_name
TF_CLI_ARGS
的值将指定命令行的其他参数。这允许在 CI 环境中更轻松地进行自动化,以及修改您自己系统上 OpenTofu 的默认行为。
这些参数直接插入子命令(例如 plan
)之后,以及在命令行上直接指定的任何标志之前。此行为确保命令行上的标志优先于环境变量。
例如,以下命令:TF_CLI_ARGS="-input=false" tofu apply -force
等效于手动键入:tofu apply -input=false -force
。
标志 TF_CLI_ARGS
影响所有 OpenTofu 命令。如果您以 TF_CLI_ARGS_name
的形式指定命名命令,则它将仅影响该命令。例如,要指定只有计划永远不会刷新,您可以设置 TF_CLI_ARGS_plan="-refresh=false"
。
标志的值被解析,就像您直接在 shell 中键入它一样。允许使用双引号和单引号来捕获字符串,否则参数将以空格分隔。
TF_DATA_DIR
TF_DATA_DIR
更改 OpenTofu 保留其每个工作目录数据的位置,例如当前的后端配置。
默认情况下,这些数据写入当前目录的 .terraform
子目录中,但如果 TF_DATA_DIR
中给定的路径非空,则将使用该路径。
在大多数情况下,无需设置此变量,但如果例如工作目录不可写,则可能需要这样做。
数据目录用于保留必须从一个命令持续到下一个命令的数据,因此在所有 OpenTofu 工作流命令(从 tofu init
开始)中始终如一地设置此变量非常重要,否则 OpenTofu 可能无法找到提供程序、模块和其他工件。
TF_WORKSPACE
对于多环境部署,为了选择一个工作区,而不是执行 tofu workspace select your_workspace
,可以使用此环境变量。使用 TF_WORKSPACE 允许并覆盖工作区选择。
例如
export TF_WORKSPACE=your_workspace
仅建议在非交互式使用时使用此环境变量,因为在本地 shell 环境中,很容易忘记设置了该变量并对错误的状态应用更改。
有关工作区的更多信息,请查看关于 使用工作区 的部分。
TF_IN_AUTOMATION
如果 TF_IN_AUTOMATION
设置为任何非空值,则 OpenTofu 会调整其输出以避免建议接下来运行的特定命令。这可以使输出在用户不直接执行 OpenTofu 命令的工作流(如 CI 系统或其他包装应用程序)中更加一致且不那么令人困惑。
这只是对 OpenTofu 的人类可读输出进行的纯美学更改,并且确切的输出差异可能会在 OpenTofu 的次要版本之间发生变化。
TF_REGISTRY_DISCOVERY_RETRY
设置 TF_REGISTRY_DISCOVERY_RETRY
以配置远程注册表客户端将尝试针对客户端连接错误或可以重试的 500 范围响应的最大请求重试次数。
TF_REGISTRY_CLIENT_TIMEOUT
对远程注册表的请求的默认客户端超时时间为 10 秒。在特殊情况下,可以配置和增加 TF_REGISTRY_CLIENT_TIMEOUT
。
export TF_REGISTRY_CLIENT_TIMEOUT=15
TF_CLI_CONFIG_FILE
OpenTofu CLI 配置文件 的位置。
export TF_CLI_CONFIG_FILE="$HOME/.tofurc-custom"
TF_PLUGIN_CACHE_DIR
TF_PLUGIN_CACHE_DIR
环境变量是设置 CLI 配置中 plugin_cache_dir
设置 的另一种方法。
您还可以使用 TF_PLUGIN_CACHE_MAY_BREAK_DEPENDENCY_LOCK_FILE
来激活 过渡兼容性设置 plugin_cache_may_break_dependency_lock_file
。
TF_IGNORE
如果将TF_IGNORE
设置为“trace”,OpenTofu将输出调试消息以显示被忽略的文件和文件夹。这在调试包含.terraformignore
文件的较大型代码库时非常有用。
export TF_IGNORE=trace
TF_PROVIDER_DOWNLOAD_RETRY
设置TF_PROVIDER_DOWNLOAD_RETRY
以配置远程提供程序客户端针对客户端连接错误或可以重试的 500 范围响应将尝试的最大请求重试次数。
export TF_PROVIDER_DOWNLOAD_RETRY=3
有关.terraformignore
的更多详细信息,请参阅使用 .terraformignore 排除上传文件。
TF_STATE_PERSIST_INTERVAL
设置TF_STATE_PERSIST_INTERVAL
以配置状态持久化之间的时间间隔(以秒为单位)。当处理包含大量资源(> 100k)的状态时,增加时间间隔可能很有用,因为上传到云服务可能需要大量时间。默认持久化间隔为 20 秒(这也是此参数的最小可能值)。以下命令将持久化间隔设置为 5 分钟(300 秒)
export TF_STATE_PERSIST_INTERVAL=300
云后端 CLI 集成
CLI 与云后端的集成允许您在命令行上使用它们。集成需要在您的 OpenTofu 配置中包含一个cloud
块。您可以在配置文件中直接定义其参数,或者通过环境变量提供它们,这对于持续集成 (CI) 等非交互式工作流很有用。
有关cloud
块环境变量的完整列表,请参阅云后端设置。
TF_ENCRYPTION
TF_ENCRYPTION
环境变量是指定terraform { encryption {} }
块内容的另一种方法。如果提供,它将被解析为 HCL 或 JSON,并覆盖 .tf 配置文件中存在的配置。
# Add/Override encryption key_provider.static.mykp
export TF_ENCRYPTION='key_provider "static" "mykp" { key = "6f6f706830656f67686f6834616872756f3751756165686565796f6f72653169" }'