0Pricing
DevOps Bootcamp · 课时

使用工作区管理环境

探索 Terraform 工作区,了解如何在同一配置中管理不同环境(例如开发、预发布和生产环境)的独立状态。

使用工作区管理环境 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

什么是 Terraform 工作区

Terraform 工作区可以帮助您为同一 Terraform 配置管理多个相互独立的状态。您可以将它们理解为彼此分离的环境,例如“开发”“预发布”或“生产”。

这意味着您可以使用同一组 .tf 文件将基础设施部署到不同位置,而无需修改代码,从而提高可复用性和一致性。

“default”工作区

首次在某个目录中初始化 Terraform 时(使用 terraform init),您会自动使用 default 工作区。

除非您创建并选择其他工作区,否则最初的所有 terraform apply 操作都会将状态存储在这个 default 工作区中。它始终存在!

创建新工作区

要创建新环境,请使用 terraform workspace new 命令。此命令还会自动将当前上下文切换到新创建的工作区。

让我们创建一个 dev 工作区:

terraform workspace new dev

随后,Terraform 会为这个 dev 环境创建独立的状态。

列出可用工作区

您可以使用 terraform workspace list 命令查看当前配置目录中的所有可用工作区。

当前处于活动状态的工作区会以星号(*)标记,帮助您跟踪不同的环境。

terraform workspace list

切换工作区

要在现有工作区之间切换,请使用 terraform workspace select 命令,后跟工作区名称。此命令会更改当前活动环境。

让我们切回 default 工作区:

terraform workspace select default

之后的任何 Terraform 操作都将针对 default 环境的状态。

使用“terraform.workspace”

您可以通过引用内置的 terraform.workspace 变量获取当前工作区名称,从而让配置具有动态性。这非常适合为资源命名或设置特定于环境的标签。

请尝试运行此示例。首先运行 terraform init,然后运行 terraform workspace new dev,最后运行 terraform apply。观察存储桶名称和标签。

provider "aws" {
  region = "us-east-1" # Or your preferred region
}

resource "aws_s3_bucket" "example" {
  bucket = "my-unique-bucket-${terraform.workspace}-12345"
  acl    = "private"

  tags = {
    Environment = terraform.workspace
    ManagedBy   = "CoddyKit"
  }
}

output "bucket_name" {
  description = "Name of the S3 bucket created."
  value       = aws_s3_bucket.example.bucket
}

隔离的状态文件

工作区最重要的特点是,每个工作区都会维护一个完全独立的状态文件。

这意味着,即使资源由相同的配置文件定义,在 dev 工作区中部署的资源也不会干扰 prod 工作区中的资源。Terraform 会在您的工作目录中的隐藏目录(.terraform/environments)内管理这些状态文件。

删除工作区

不再需要某个环境时,您可以使用 terraform workspace delete <name> 删除其工作区。

  • 重要:您不能删除当前处于活动状态的工作区。
  • 务必注意:删除工作区之前,请务必使用 terraform destroy 销毁与该工作区关联的所有资源。否则,可能会留下无主资源!
terraform workspace select default
terraform workspace delete dev

工作区与独立目录的比较

虽然工作区非常适合处理同一配置的细微变化,但它并不总是最佳选择。请考虑以下几点:

  • 工作区:适用于核心基础设施设计相同、但环境存在小幅差异的情况(例如资源数量、标签)。
  • 独立目录:更适用于基础设施设计存在显著差异,或由不同团队管理完全独立的环境。

请选择最符合项目复杂程度和团队结构的方法。

工作区检查

您已经了解了 Terraform 工作区。让我们测试一下您的理解。

回顾:使用工作区管理环境

做得很好!您已经了解了 Terraform 工作区这一强大功能,它可以通过单一配置管理多个环境。请记住以下要点:

  • 工作区为不同环境(例如 dev、prod)提供相互隔离的状态文件。
  • 使用 terraform workspace new、list 和 select 管理工作区。
  • terraform.workspace 变量支持动态的、特定于环境的配置。
  • 删除工作区前,务必先销毁资源,以避免留下无主基础设施。

这样就能灵活、有序地部署基础设施!

常见问题解答

「使用工作区管理环境」课时是免费的吗?

是的 — 「使用工作区管理环境」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「使用工作区管理环境」这节课中我会学到什么?

探索 Terraform 工作区,了解如何在同一配置中管理不同环境(例如开发、预发布和生产环境)的独立状态。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「使用工作区管理环境」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Terraform 模块简介
  2. 创建可复用模块
  3. 使用工作区管理环境
  4. 将模块发布到注册表
← 返回 DevOps Bootcamp