云商店-资源编排:关键代码

时间:2023-11-01 16:24:59

关键代码

资源编排模板的关键代码为根目录下的main.tf,这是整个资源编排模板的执行入口,包含了创建云资源的具体代码逻辑,如下所示:

// 查询当前Region可用的azdata "huaweicloud_availability_zones" "az" {} // 查询当前可用的ecs的falvordata "huaweicloud_compute_flavors" "flavors" {  region            = var.region  availability_zone = local.availability_zone  performance_type  = "normal"  cpu_core_count    = var.ecs_cpu_core_count  memory_size       = var.ecs_memory_size} // 查询当前可用的rds的falvordata "huaweicloud_rds_flavors" "flavors" {  region            = var.region  db_type           = "MySQL"  db_version        = "8.0"  instance_mode     = "single"  vcpus             = var.db_vcpus  memory            = var.db_memory_size  availability_zone = local.availability_zone} locals {  // 需要根据业务指定一个租户下唯一的名字,会作为资源名字的一部分  app_id                = "rf_app"  // 云资源的计费模式  charging_mode         = "postPaid"  // 带宽的计费模式  bandwidth_charge_mode = "traffic"  db_port               = 3306  availability_zone     = data.huaweicloud_availability_zones.az.names[0]  // Region和内网DNS的映射关系,不同Region的内网DNS不一样,详情参考:https://support.huaweicloud.com/dns_faq/dns_faq_002.html  region_dns_map = {    cn-north-4 = ["100.125.1.250", "100.125.129.250"]    cn-south-1 = ["100.125.1.250", "100.125.136.29"]  }   // Region和imageId的映射关系  image_ids_map = {    cn-north-4 = ""    cn-south-1 = ""  }} // 创建VPCmodule "vpc" {  source = "./modules/vpc"   vpc_name            = "vpc_${local.app_id}"  subnet_name         = "subnet_${local.app_id}"  secgroup_name       = "secgroup_${local.app_id}"  rds_secgroup_name   = "rds_secgroup_${local.app_id}"  availability_zone   = local.availability_zone  remote_ip_cidr      = var.remote_ip_cidr  vpc_subnet_dns_list = local.region_dns_map[var.region]} module "rds" {  source = "./modules/rds"  charging_mode            = local.charging_mode  region                   = var.region  flavor                   = data.huaweicloud_rds_flavors.flavors.flavors[0].name  db_instance_name         = "rds_${local.app_id}"  db_availability_zone     = [local.availability_zone]  time_zone                = "UTC"  vpc_id                   = module.vpc.vpc_id  subnet_id                = module.vpc.subnet_id  security_group_id        = module.vpc.rds_secgroup_id  db_engines               = "MySQL"  db_version               = "8.0"  db_password              = var.db_password  db_port                  = local.db_port  db_instance_storage_type = "CLOUDSSD"  db_allocated_storage     = var.db_allocated_storage  db_vcpus                 = var.db_vcpus  db_memory_size           = var.db_memory_size}  module "ecs" {  source = "./modules/ecs"   region               = var.region  ecs_name             = "ecs_${local.app_id}"  availability_zone    = local.availability_zone  flavor_id            = data.huaweicloud_compute_flavors.flavors.ids[0]  image_id             = local.image_ids_map[var.region]  ecs_system_disk_size = var.ecs_system_disk_size  charging_mode        = local.charging_mode  secgroup_id          = module.vpc.secgroup_id  subnet_id            = module.vpc.subnet_id  user_data            = "#!/bin/bash\necho 'root:${var.ecs_password}' | chpasswd"} // 创建EIPmodule "eip" {  source = "./modules/eip"   eip_name              = "eip_${local.app_id}"  charging_mode         = local.charging_mode   ecs_instance_id       = module.ecs.id   bandwidth_name        = "bandwidth_${local.app_id}"  bandwidth_charge_mode = local.bandwidth_charge_mode  bandwidth_size        = var.bandwidth_size} // 为ECS创建数据盘module "evs" {  source = "./modules/evs"   name              = "evs_${local.app_id}"  volume_size       = var.ecs_data_disk_size  availability_zone = local.availability_zone  charging_mode     = local.charging_mode   ecs_instance_id       = module.ecs.id}
support.huaweicloud.com/usermanual-marketplace/sp_topic_0000310.html