- 命令行
- 使用 OpenTofu CLI 与云端后端
- 云端后端设置
云端后端设置
OpenTofu CLI 可以与云端后端集成,充当其客户端。
您必须配置以下设置才能对特定工作目录使用云端后端
- 提供访问云端后端的凭据,最好使用
tofu login
命令。 - 在目录的 OpenTofu 配置中添加一个
cloud
块,以指定要使用的组织和工作区。 - 可选地,使用
.terraformignore
文件指定在运行计划和应用时不应与 OpenTofu 配置一起上传的文件。
添加或更改 cloud
块后,必须运行 tofu init
。
cloud
块
cloud
块是顶级 terraform
设置块中的嵌套块。它指定要用于当前工作目录的哪些云端后端工作区。
terraform {
cloud {
organization = "my-org"
hostname = "app.example.org"
workspaces {
project = "networking-development"
tags = ["networking", "source:cli"]
}
}
}
cloud
块也有一些特殊限制
- 一个配置只能提供一个
cloud
块。 cloud
块不能与 状态后端 一起使用。一个配置可以使用其中一个,但不能同时使用两个。cloud
块不能引用命名值(如输入变量、局部变量或数据源属性)。
cloud
块仅影响 OpenTofu CLI 的行为。当云端后端使用包含 cloud 块的配置时 - 例如,当工作区配置为直接使用 VCS 提供程序时 - 它会忽略该块并根据其自己的工作区设置进行操作。
参数
cloud
块支持以下配置参数
-
hostname
- (必需)云端后端的主机名。 -
organization
- (必需)包含当前配置应使用的工作区的组织的名称。 -
workspaces
- (必需)一个嵌套块,指定要用于当前配置的哪些远程云端后端工作区。workspaces
块必须包含以下参数中的**一个**,每个参数都表示工作区应如何映射的策略-
tags
- (可选)一组云端后端工作区标签。您将能够使用此工作目录与具有所有指定标签的任何工作区,并且可以使用tofu workspace
命令 在它们之间切换或创建新的工作区。新工作区将自动具有指定的标签。此选项与name
冲突。 -
name
- (可选)单个云端后端工作区的名称。您将只能使用此工作目录中配置中指定的工作区,并且无法从 CLI 管理工作区(例如tofu workspace select
或tofu workspace new
)。此选项与tags
冲突。 -
project
- (可选)云端后端项目的名称。需要创建的工作区将在此项目中创建。tofu workspace list
将根据提供的项目中的工作区进行筛选。
-
-
token
- (可选)用于对云端后端进行身份验证的令牌。我们建议从配置中省略令牌,而是使用tofu login
或在 CLI 配置文件 中手动配置credentials
。
环境变量
您可以使用环境变量来配置一个或多个 cloud
块属性。当您希望将 OpenTofu 配置为持续集成 (CI) 管道的一部分时,这很有用。仅当您的配置文件中省略了相应的属性时,OpenTofu 才会读取这些变量。如果您选择完全通过环境变量配置 cloud
块,则仍必须在配置文件中添加一个空的 cloud
块。
远程执行与非交互式工作流需要自动批准的部署。通过确保没有人可以在您的自动化构建管道之外更改您的基础设施,最大程度地降低不可预测的基础设施更改和配置漂移的风险。
使用以下环境变量配置cloud
块
-
TF_CLOUD_ORGANIZATION
- 组织的名称。当cloud
块中省略organization
时,OpenTofu会读取此变量。如果两者都指定,则配置优先。 -
TF_CLOUD_HOSTNAME
- 云后端的主机名。当cloud
块中省略hostname
时,OpenTofu会读取此变量。如果两者都指定,则配置优先。 -
TF_CLOUD_PROJECT
- 云后端项目的名称。当cloud
块中省略workspaces.project
时,OpenTofu会读取此变量。如果两者都指定,则云块配置优先。 -
TF_WORKSPACE
- 单个云后端工作区的名称。当cloud
块中省略workspaces
时,OpenTofu会读取此变量。云后端不会从此变量创建新的工作区;工作区必须存在于指定的组织中。如果cloud
块使用标签,则可以设置TF_WORKSPACE
。但是,TF_WORKSPACE
的值必须包含在标签集中。此变量还在本地环境中选择工作区。有关详细信息,请参阅TF_WORKSPACE。
使用 .terraformignore 排除要上传的文件
在 CLI 驱动的运行中执行远程plan
或apply
时,您的配置目录的副本将上传到云后端。您可以通过在配置目录的根目录中添加.terraformignore
文件来定义要排除上传的路径。如果此文件不存在,则上传默认情况下将排除以下内容
.git/
目录.terraform/
目录(不包括.terraform/modules
)
.terraformignore
文件中的规则类似于.gitignore 文件中允许的规则
- 注释(以
#
开头)或空行将被忽略。 - 以正斜杠
/
结尾的模式表示指定目录。 - 以感叹号
!
开头的模式表示否定。
与.gitignore
不同,仅考虑配置目录根目录下的.terraformignore
。