跳转至

Megaport Terraform Provider 故障排查

如果你在使用 Megaport Terraform Provider 时遇到问题,请按照以下故障排查操作逐步进行。

有关排查 API 问题的信息,请参见 API 故障排查

故障排查操作

操作 步骤
确保你使用的 Terraform 和 Megaport Terraform Provider 为最新版本 请确保你使用受支持的 Terraform 版本以及 Megaport Terraform Provider 的最新版本,可在 Megaport Terraform Provider Registry 中查看。Megaport 会针对最新的两个 Terraform 主版本进行测试。

要检查二者,请运行以下命令:

terraform version

命令应输出类似如下的版本信息:

Terraform v#.#.#
on darwin_arm64
+ provider registry.terraform.io/megaport/megaport v#.#.#

你可以从 Upgrading Guides (HashiCorp) 下载并更新 Terraform。

Megaport Terraform Provider 的版本由你在 Terraform 文件中创建提供程序时声明的版本决定。更多信息,参见 创建 Megaport Terraform Provider 配置文件
解决 Azure VXC 删除错误 删除 Azure VXC 会导致出现以下错误:

Error: Error deleting resource ****: has an attached peering connection that must be removed in Azure first:

要解决此问题,应改为使用 Azure Terraform 提供程序管理 ExpressRoute peering,这样会在 VXC 之前先拆除该 peering。更多信息,参见 the Azure provider documentation
当关联服务被删除时,解决 VXC 被删除的问题 当重新创建 Port 时,提供程序无法处理该情况,这将会删除该 Port 及其关联的 VXCs。

例如,如果你有一个包含 Port,且其速率为 1000 的 Terraform 文件:

resource "megaport_port" "port_2" {
  product_name = "port2"
  port_speed = 1000
  location_id = data.megaport_location.loc.id
  contract_term_months = 12
  marketplace_visibility = false
  cost_centre = "test2"
  diversity_zone = "red"
}

并希望将 port_2 的速率更新为 10000,这将触发重新创建 Port,并会先删除该 Port 及其关联的 VXCs。当前提供程序无法处理这种情况,并会返回类似如下的错误:

Error: Error Updating VXC
Could not update VXC with ID a7b44cda-28bc-4d64-b05b-8703114a8fcd: PUT https://api-staging.megaport.com/v3/product/vxc/a7b44cda-28bc-4d64-b05b-8703114a8fcd: 400 (trace_id "89b4016d9f9d0b7545987092d0b17493") Product [a7b44cda-28bc-4d64-b05b-8703114a8fcd] Not Found

要解决此问题,你可以像下面这样为 Port 资源指定一个 lifecycle 修饰符,这将先创建新的 Port,对 VXC 执行更新,然后删除旧的 Port。

lifecycle {
  create_before_destroy = true
}
报告提供程序错误消息 如果你看到以下错误消息,这表明提供程序存在问题。 联系支持create a GitHub issue,并附上触发该问题的操作过程详情,以便记录并进行调查。

"This is a bug in the provider, which should be reported in the provider's own issue tracker."