地铁与设施
2021 年 4 月,Equinix Metal 推出了全新的数据中心位置概念——Metros。Metro 是 Equinix 的一项数据中心位置概念,它将地理位置相近的数据中心聚集在一起。Metro 内的数据中心共享容量和网络功能。您可以在 https://docs.equinix.com/metal/locations/metros/ 了解更多关于 Metros 的信息。2023 年 4 月,设施部署 (facility deployment) 被弃用,Metro 配置作为一种更全面的更优部署策略被推出。有关 API 变更的更多详细信息,请参阅 Metal API 文档中的设施指南。
在引入 Metro 之前,资源部署到单个 facility 位置。配置 equinix_metal_device 资源时,Equinix Metal 可以根据用户提供的 facilities 列表或通配符 any 设施选择设施。各个设施位置使用类似“sv15”或“ny5”的代码。Metro 将设施分组。例如,Metro“sv”包含“sv15”设施以及其他设施。如果在创建资源时指定了 Metro,则该资源将被部署到该 Metro 组中的某个设施。然后,您可以使用资源的只读属性(例如,equinix_metal_device 资源的 deployed_facility)查找已部署的设施。
将 Terraform 模板更改为使用 Metros 而不是 Facilities。
为了利用 Metro 的某些功能,您可能需要更改 Terraform 模板的配置,将设备指定为 metro 而不是 facilities。由于 metro 和 facilities 都是 ForceNew 参数(更改后会触发资源的重新创建),如果您不希望设备被销毁,则应谨慎操作。
我们已更新 equinix_metal_device 资源,因此更改过程应该无缝衔接,但请谨慎操作。metro 参数也是一个计算属性,如果您使用的提供程序版本高于 3.2.1,则 metro 属性实际上已存在于您的资源中。此时,您只需将其显式添加到配置中即可。
facilities 参数仅用于创建设备资源时选择设施。设备实际部署的设施位于 deployed_facility 计算属性中。
如果您只想将 equinix_metal_device 资源规范从基于设施的更改为基于都市的,例如从设施 ["sv15"] 更改为都市 "sv",则只需删除 facilities 属性,并添加 metro 属性即可。
例如,假设部署在 sv15 设施中的设备配置如下:
resource "equinix_metal_device" "node" {
project_id = local.project_id
facilities = ["sv15"]
plan = "c3.small.x86"
operating_system = "ubuntu_16_04"
hostname = "test"
billing_cycle = "hourly"
}
您可以移除 faclities 并添加 metro,将配置更改为:
resource "equinix_metal_device" "node" {
project_id = local.project_id
metro = "sv"
plan = "c3.small.x86"
operating_system = "ubuntu_16_04"
hostname = "test"
billing_cycle = "hourly"
}
为了测试更改是否影响了状态,以及设备是否会被重新创建,您可以检查 terraform plan 是否报告了任何差异。只要部署设备的设施位于该都市区域内,Terraform 状态就应该是最新的。
如果计划差异不为空,则您可能使用了不包含设备部署所在设施的地铁线路。如果您使用了 facilities 列表中的多个设施,或者使用了特殊的“任意”设施,则可能会发生这种情况。
您可以通过检查 equinix_metal_device 资源的 Terraform 状态来查找已部署的设施及其所在的 Metro:
$ terraform state show equinix_metal_device.node | grep deployed
deployed_facility = "sv15"
$ terraform state show equinix_metal_device.node | grep metro
metro = "sv"
然后,您应该在 Terraform 模板中设置现有的 Metro。