赛事靶机规模化部署 配置VPC、子网和安全组规则 locals { sgrules [ { range "80009000", destcidrip "222.71.48.90/32" protocol "tcp" direction "ingress" }, ] } module "vpc" { source "./vpc" vpcnameprefix var.vpcname subnetnameprefix var.subnetname cidr var.cidr sgrules local.sgrules } 创建云主机和弹性IP并绑定 module "ecs" { source "./ecs" ecscount var.instancecount instancenameprefix var.instancename displaynameprefix var.instancename flavorname var.flavorname systemdisktype var.systemdisktype systemdisksize var.systemdisksize imageid var.imageid bandwidth var.bandwidth vpcids module.vpc.vpcid subnetids module.vpc.subnetid passwords local.passwords } 输出主机信息 output "ecseip" { value [ for idx, e in module.ecs.ecslist : { ecsid module.ecs.ecslist[idx].id ecsname module.ecs.ecslist[idx].displayname fixedip module.ecs.ecslist[idx].fixedip eipaddress module.ecs.ecslist[idx].eipaddress password local.passwords[idx] } ] } locals { seedlist [for i in range(var.instancecount) : "${var.passwordseed}${i}"] passwords [ for seed in local.seedlist : format( "%s%s%s", substr(replace(upper(sha256(seed)), "/[^AZaz09]/", ""), 0, 5), "A@a", substr(replace(lower(sha256(seed)), "/[^AZaz09]/", ""), 5, 5), ) ] } ecsmain.tf java terraform { requiredproviders { ctyun { source "ctyunit/ctyun" version "2.1.0" } } } locals { vpccount length(var.vpcids) }