如何避免ECS售罄导致部署失败
应用场景
本文介绍了在华为云云商店如何避免自动部署模板中,需要创建ECS的Flavor售罄,导致部署失败。
如下图所示,ECS的c7.large.4 Flavor在可用区3售罄,而在可用区2是有库存的。
操作方法
华为云ECS的每个Flavor在各个Region和可用区的售卖情况可能不一样,如果模板中直接写死ECS的Flavor 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]