更新时间:2024-07-05 GMT+08:00
分享

如何避免ECS售罄导致部署失败

应用场景

本文介绍了在华为云云商店如何避免自动部署模板中,需要创建ECSFlavor售罄,导致部署失败。

如下图所示,ECSc7.large.4 Flavor在可用区3售罄,而在可用区2是有库存的。

操作方法

华为云ECS的每个Flavor在各个Region和可用区的售卖情况可能不一样,如果模板中直接写死ECSFlavor Id,可能导致一个模板在同一个Region的不同时刻部署结果不一样,或者是在不同Region的部署结果不一样。

推荐在开发模板的过程中,先通过data sources查询某个Region所有可用区可用的flavor,如下所示。

// Query flavors of all az
data "huaweicloud_compute_flavors" "flavors" {
  count = length(data.huaweicloud_availability_zones.az.names)
 
availability_zone = data.huaweicloud_availability_zones.az.names[count.index]
 
  performance_type = var.performance_type
  cpu_core_count   = local.instance_flavor_cpu
  memory_size      = local.instance_flavor_memory
}

然后获取到ECS可用区和该可用区可用ECS flavor的映射关系,如下所示

# az and available flavors map, such as {cn-north-4a = ["ac7.large.2", "c3ne.large.2"]}
available_flavors_id_maps = { for i, flavor_ids in data.huaweicloud_compute_flavors.flavors[*].ids : data.huaweicloud_availability_zones.az.names[i] => flavor_ids if length(flavor_ids) > 0 }
 
# 获取当前Region可用的可用区
availability_zone = keys(local.available_flavors_id_maps)[0]
 
# 获取可用的ECS Flavor
flavor_id = local.available_flavors_id_maps[local.availability_zone][0]

相关文档