跳转至

Terraform 状态管理与 Megaport 资源

本主题介绍 Terraform 状态文件,以及使用它将你的配置文件映射到你网络上已部署的 Megaport 服务的推荐实践。

什么是 Terraform 状态?

Terraform 会将你创建的资源信息存储在一个名为 terraform.tfstate 的状态文件中。

在运行 terraform apply 命令后会自动创建此文件。它在特定时间点提供由 Terraform 管理的基础设施快照。该文件会在部署 Terraform 的同一目录中创建。建议定期监控 terraform.tfstate

Terraform 状态文件的主要用途包括:

  • 映射实际资源 – 状态文件跟踪 Terraform 已创建并正在管理的实际基础设施资源。它记录它们的配置、ID 和依赖关系等信息。

  • 唯一可信来源 – 状态文件是你当前基础设施的唯一可信来源。当你运行 terraform apply 命令时,它会将你的配置文件与状态文件进行比较,以确定需要进行哪些更改。

  • 跟踪元数据 – 状态文件存储 Terraform 在内部使用的元数据,例如用于创建该状态的 Terraform 版本以及资源依赖关系。

有关 Terraform 状态文件的更多信息,请参见 State (HashiCorp)

了解 Terraform 状态对 Megaport 资源的作用

Terraform 状态是一个关键组件,用于将你的配置文件映射到你网络上已部署的 Megaport 资源。运行 terraform apply 命令时,Terraform 会创建一个名为 terraform.tfstate 的状态文件,用于跟踪其管理的所有资源、它们的配置以及相互依赖关系。

Megaport Terraform Provider 状态文件包含哪些内容?

对于 Megaport 资源,状态文件会跟踪如下信息:

  • 资源 ID 和 UID
  • Port 配置
  • VXC 设置
  • MCR 路由器配置
  • 合作伙伴连接
  • 位置信息

关键状态管理概念

  • 导入现有资源 – 如果你已经通过 Portal 配置了 Megaport 服务,请使用 terraform import 命令将它们纳入 Terraform 管理:

    示例 1:导入一个现有的 Port

    terraform import megaport_port.my_port "example-uid-41d4-a716-446655440000"
    

    示例 2:导入一个现有的 VXC

    terraform import megaport_vxc.my_vxc "example-uid-426f-9247-bb680e5fe0c8"
    

    详情请参见 导入现有生产服务

  • 防止意外删除 – 为保护关键基础设施,请使用 Terraform 的 prevent_destroy 生命周期特性。该选项可在应用配置更新时防止现有资源被意外删除。 了解更多信息(包括一些示例),请参见 Megaport Terraform Provider GitHub repository, Lifecycle Prevent Destroy Example

  • 团队环境的状态文件存储 – 默认情况下,Terraform 会将状态信息存储在本地。

    在团队环境中存储 Terraform 状态文件时,建议使用远程存储,以便协作、版本控制和安全性。

    • 使用远程状态存储(Terraform Cloud、S3 等)。
    • 启用状态锁定以防止并发修改。
    • 考虑对状态文件加密,因为其中包含敏感信息。
  • 状态文件维护 – 在某些情况下,你可能需要使用一些命令,例如:

    • 使用 terraform state list 查看所有受管资源。
    • 使用 terraform state show 检查特定资源。
    • 使用 terraform state rm 在不销毁的情况下将资源从状态中移除。
  • 处理状态漂移 – Terraform 的状态文件会跟踪其管理的所有基础设施。在 Terraform 之外手动更改这些资源,可能导致状态文件与实际不一致,即所谓的漂移

    如果 Terraform 记录的基础设施与实际不匹配,它会尝试修复这些差异,这可能会导致资源被意外删除或重新创建。 了解更多信息,请参见 Manage resource drift (HashiCorp)

    如果在 Terraform 之外对 Megaport 资源进行了更改:

    • 使用 terraform refresh 命令,根据当前资源配置更新状态。
    • 考虑定期运行 terraform plan 命令以检测未授权的更改。

推荐实践

我们建议遵循以下实践,以便更好地使用 Terraform:

  • 定期备份状态文件 – 丢失后无法恢复。
  • 对配置文件进行版本控制 – 但切勿保存包含凭据等敏感数据的状态文件。有关更多信息,请参见 Sensitive Data in State (HashiCorp)
  • 模块化复杂配置 – 这种方法通过促进更有条理且可复用的结构来改进资源管理。
  • 在 Portal 中锁定 Megaport 服务 – Terraform 状态是资源管理的唯一可信来源。为防止在 Portal 和 Terraform 中对生产服务产生冲突性更改,建议锁定生产服务。 详情请参见 锁定 Megaport 服务

更多信息请参见 Learn Terraform recommended practices (HashiCorp)

参考资料