跳至主要内容

云端后端设置

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 selecttofu 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 驱动的运行中执行远程planapply时,您的配置目录的副本将上传到云后端。您可以通过在配置目录的根目录中添加.terraformignore文件来定义要排除上传的路径。如果此文件不存在,则上传默认情况下将排除以下内容

  • .git/ 目录
  • .terraform/ 目录(不包括.terraform/modules

.terraformignore文件中的规则类似于.gitignore 文件中允许的规则

  • 注释(以#开头)或空行将被忽略。
  • 以正斜杠/结尾的模式表示指定目录。
  • 以感叹号!开头的模式表示否定。