工作区
每个 OpenTofu 配置都关联着一个 后端,该后端定义了 OpenTofu 如何执行操作以及 OpenTofu 在哪里存储持久性数据,例如 状态。
存储在后端中的持久性数据属于一个工作区。后端最初只有一个工作区,其中包含一个与该配置关联的 OpenTofu 状态。某些后端支持多个命名工作区,允许将多个状态与单个配置关联。配置仍然只有一个后端,但您可以在不配置新后端或更改身份验证凭据的情况下部署该配置的多个不同实例。
支持多个工作区的后端
您可以使用以下后端中的多个工作区
使用工作区
重要
工作区不适用于系统分解或需要单独的凭据和访问控制的部署。有关详细信息和建议的替代方案,请参阅 OpenTofu CLI 文档中的 用例。
OpenTofu 从一个名为 default
的单个默认工作区开始,您无法删除该工作区。如果您尚未创建新的工作区,则您正在 OpenTofu 工作目录中使用默认工作区。
当您在新的工作区中运行 tofu plan
时,OpenTofu 不会访问其他工作区中的现有资源。这些资源仍然物理存在,但您必须切换工作区才能管理它们。
有关如何创建和使用工作区的完整详细信息,请参阅 OpenTofu CLI 工作区 文档。
当前工作区插值
在您的 OpenTofu 配置中,您可以使用 ${terraform.workspace}
插值序列包含当前工作区的名称。这可以在允许插值的所有位置使用。
引用当前工作区对于根据工作区更改行为很有用。例如,对于非默认工作区,旋转较小的集群大小可能很有用。例如
resource "aws_instance" "example" {
count = "${terraform.workspace == "default" ? 5 : 1}"
# ... other arguments
}
另一个常用的用例是使用工作区名称作为命名或标记行为的一部分
resource "aws_instance" "example" {
tags = {
Name = "web - ${terraform.workspace}"
}
# ... other arguments
}