阿里云国际版云网络Terraform自动化实战:VPC、CDN、GA、WAF、SSL与DNS声明式一键部署

📅 · 阿里云国际版实战教程 - ChengziCloud

一句话结论

Meta Description: 使用Terraform声明式管理阿里云国际版六大云网络产品:VPC组网、CDN加速、全球加速GA、WAF防护、SSL证书与DNS解析,实现基础设施即代码(IaC)自动化运维。

本文要点
  • 前言
  • 环境准备
  • VPC组网:声明式创建专有网络
  • CDN加速:Terraform配置全站加速
  • 全球加速GA:跨地域低延迟互联
  • WAF防护:基于Terraform的声明式安全策略
  • SSL证书:从申请到自动续期的IaC化管理
  • DNS云解析:域名记录即代码

Meta Description: 使用Terraform声明式管理阿里云国际版六大云网络产品:VPC组网、CDN加速、全球加速GA、WAF防护、SSL证书与DNS解析,实现基础设施即代码(IaC)自动化运维。

关键词:阿里云国际版、Terraform自动化、VPC组网、CDN加速、全球加速GA、WAF防护、SSL证书、云解析DNS、基础设施即代码、IaC

前言

手动在阿里云控制台上逐个点击创建VPC、CDN域名、GA加速器、WAF实例、SSL证书和DNS解析记录——不仅耗时,而且极易因人为疏忽导致配置不一致。当业务扩展到多地域、多环境(开发/测试/生产)时,手动运维的瓶颈更加突出。Terraform 作为 HashiCorp 推出的基础设施即代码(Infrastructure as Code,IaC)工具,允许开发者用声明式配置文件描述云资源,一键完成六款网络产品的自动化部署。本文将以阿里云国际版为平台,演示如何用Terraform统一编排VPC、CDN、GA、WAF、SSL与DNS六大核心产品,让你的云网络管理进入"代码即文档、一键即部署"的阶段。

环境准备

在开始之前,确保本地已安装以下工具并完成阿里云API密钥配置:


// 安装 Terraform(macOS)
brew install terraform

// 安装 Terraform(Linux)
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

// 验证安装
terraform version

创建阿里云国际站AccessKey(访问 RAM控制台 获取),然后配置Terraform Provider:


// provider.tf
terraform {
  required_providers {
    alicloud = {
      source  = "aliyun/alicloud"
      version = "~> 1.220"
    }
  }
  required_version = ">= 1.0"
}

provider "alicloud" {
  region = "ap-southeast-1"  // 阿里云国际版常用地域:新加坡
  // AccessKey和SecretKey建议通过环境变量传入:
  // export ALICLOUD_ACCESS_KEY="your-access-key"
  // export ALICLOUD_SECRET_KEY="your-secret-key"
}

VPC组网:声明式创建专有网络

VPC是所有云资源的网络基础。以下Terraform代码在 ap-southeast-1 地域创建一个VPC,包含两个可用区的交换机,实现高可用组网:


// vpc.tf
resource "alicloud_vpc" "main" {
  vpc_name   = "production-vpc"
  cidr_block = "10.0.0.0/16"
}

resource "alicloud_vswitch" "az_a" {
  vpc_id       = alicloud_vpc.main.id
  cidr_block   = "10.0.1.0/24"
  zone_id      = "ap-southeast-1a"
  vswitch_name = "vsw-az-a"
}

resource "alicloud_vswitch" "az_b" {
  vpc_id       = alicloud_vpc.main.id
  cidr_block   = "10.0.2.0/24"
  zone_id      = "ap-southeast-1b"
  vswitch_name = "vsw-az-b"
}

// NAT网关:为私有子网提供出站互联网访问
resource "alicloud_nat_gateway" "main" {
  vpc_id         = alicloud_vpc.main.id
  nat_gateway_name = "nat-gw-main"
  nat_type       = "Enhanced"
  vswitch_id     = alicloud_vswitch.az_a.id
  payment_type   = "PayAsYouGo"
}

// 弹性公网IP绑定至NAT网关
resource "alicloud_eip_address" "nat" {
  address_name = "nat-eip"
  payment_type = "PayAsYouGo"
}

resource "alicloud_eip_association" "nat" {
  allocation_id = alicloud_eip_address.nat.id
  instance_id   = alicloud_nat_gateway.main.id
}

通过Terraform执行 terraform apply,VPC、交换机、NAT网关和EIP在约60秒内全部就绪。相比控制台手动操作,IaC方式确保了dev/staging/prod三个环境使用完全一致的网络拓扑。

CDN加速:Terraform配置全站加速

阿里云CDN(Content Delivery Network)通过全球边缘节点加速静态与动态内容分发。使用Terraform可以一次性完成域名添加、源站配置和缓存规则设置:


// cdn.tf
resource "alicloud_cdn_domain_new" "main" {
  domain_name = "cdn.example.com"
  cdn_type    = "web"  // 全站加速
  scope       = "overseas"  // 国际版:海外加速

  sources {
    content  = "origin.example.com"
    type     = "domain"
    priority = 20
    port     = 443
    weight   = 10
  }

  certificate_config {
    server_certificate_status = "on"
    cert_type                 = "cas"  // 使用阿里云SSL证书服务
    cert_name                 = alicloud_cas_certificate.main.cert_name
  }
}

// 缓存配置:静态资源强缓存
resource "alicloud_cdn_domain_config" "cache" {
  domain_name   = alicloud_cdn_domain_new.main.domain_name
  function_name = "set_req_host_header"
  function_args {
    arg_name  = "domain_name"
    arg_value = "origin.example.com"
  }
}

将CDN域名也纳入Terraform管理后,当源站IP变更时,只需修改一处代码并 terraform apply,所有关联的CDN配置自动级联更新。

全球加速GA:跨地域低延迟互联

阿里云全球加速(Global Accelerator,GA)依托阿里云全球骨干网,为海外用户访问部署在单个地域的源站提供加速通道。Terraform配置如下:


// ga.tf
resource "alicloud_ga_accelerator" "main" {
  accelerator_name = "global-accelerator"
  spec             = "1"  // 小型规格(1~5依次递增)
  duration         = 1    // 1个月(PayAsYouGo按月)
  auto_use_coupon  = true
}

resource "alicloud_ga_bandwidth_package" "main" {
  bandwidth      = 20     // 带宽20 Mbps
  type           = "Basic"
  bandwidth_type = "Basic"
  duration       = 1
  auto_pay       = true
}

resource "alicloud_ga_bandwidth_package_attachment" "main" {
  accelerator_id       = alicloud_ga_accelerator.main.id
  bandwidth_package_id = alicloud_ga_bandwidth_package.main.id
}

// GA监听器(TCP/HTTP/HTTPS)
resource "alicloud_ga_listener" "https" {
  accelerator_id = alicloud_ga_accelerator.main.id
  port_ranges {
    from_port = 443
    to_port   = 443
  }
  protocol     = "HTTPS"
  client_affinity = "SOURCE_IP"
  certificates {
    id = alicloud_cas_certificate.main.id
  }
}

// 终端节点组:指向源站地域的SLB或ECS
resource "alicloud_ga_endpoint_group" "singapore" {
  accelerator_id       = alicloud_ga_accelerator.main.id
  listener_id          = alicloud_ga_listener.https.id
  endpoint_group_region = "ap-southeast-1"
  endpoint_group_type   = "default"
  health_check_enabled  = true
  health_check_path     = "/health"

  endpoint_configurations {
    endpoint = alicloud_slb_load_balancer.main.ip_address
    type     = "PublicIp"
    weight   = 100
  }
}

对比:CDN vs GA 适用场景

维度CDN(内容分发网络)GA(全球加速)
核心能力边缘缓存静态/动态内容优化传输层网络路径
适用协议HTTP/HTTPS为主TCP/UDP/HTTP/HTTPS 全协议
延迟优化方式就近边缘节点响应接入阿里云全球骨干网
典型场景网站加速、大文件下载、直播游戏加速、API加速、企业SaaS
缓存能力✅ 强缓存策略❌ 无缓存,纯传输加速
中国大陆优化需购买DCDN中国加速需购买跨境带宽包

Terraform管理GA的优势在于:当需要在多个地域新增终端节点组时,只需复制一段HCL代码,无需在控制台重复点击数十次。

WAF防护:基于Terraform的声明式安全策略

阿里云WAF(Web Application Firewall)3.0版本支持完整的Terraform资源管理。以下配置为域名启用WAF并设置核心防护规则:


// waf.tf
resource "alicloud_wafv3_instance" "main" {
  pay_type = "Subscription"
}

resource "alicloud_wafv3_domain" "main" {
  instance_id    = alicloud_wafv3_instance.main.id
  domain         = "www.example.com"

  // 源站配置(WAF回源地址)
  listen {
    http_ports  = [80]
    https_ports = [443]
  }

  redirect {
    loadbalance = "iphash"
    request_headers {
      key   = "X-Real-IP"
      value = "true"
    }
  }
}

// WAF防护规则模板(OWASP Top 10 + 自定义规则)
resource "alicloud_wafv3_defense_template" "main" {
  instance_id       = alicloud_wafv3_instance.main.id
  defense_template_name = "production-template"
  template_type     = "user_default"

  // SQL注入防护
  defense_scene {
    defense_type = "waf"
    defense_sub_type = "sql_injection"
    mode         = "block"
  }

  // XSS跨站脚本防护
  defense_scene {
    defense_type = "waf"
    defense_sub_type = "xss"
    mode         = "block"
  }

  // CC攻击防护(频率控制)
  defense_scene {
    defense_type = "cc"
    defense_sub_type = "custom_cc"
    mode         = "block"
  }
}

DDoS高防与WAF的区别

防护类型DDoS高防WAF
攻击层级网络层(L3/L4)应用层(L7)
防御对象大流量DDoS攻击(SYN Flood、UDP Flood)SQL注入、XSS、CSRF、CC攻击
防护容量Tbps级依赖实例规格
典型配置BGP高防IP + 清洗中心域名接入 + 规则模板
Terraform资源alicloud_ddosbgp_instancealicloud_wafv3_domain

实战建议:DDoS高防和WAF应当叠加使用形成纵深防御——DDoS高防挡在最外层清洗网络层攻击,WAF在应用层拦截恶意请求。Terraform可以一次性为同一域名同时配置两者的接入:


// 同时配置DDoS高防 + WAF(链式接入)
// 用户 → DDoS高防IP(清洗)→ WAF(应用层过滤)→ 源站
resource "alicloud_ddosbgp_instance" "main" {
  name          = "ddos-defense"
  base_bandwidth = 20 // 基础防护带宽20Gbps
  bandwith      = -1  // 弹性防护
  ip_count      = 1
  ip_type       = "IPv4"
  period        = 1
}

resource "alicloud_ddoscoo_domain_resource" "main" {
  domain     = "www.example.com"
  instance_ids = [alicloud_ddosbgp_instance.main.id]
  real_servers = [alicloud_slb_load_balancer.main.ip_address]
  rs_type    = 0  // 源站IP
  proxy_types {
    proxy_ports = [443]
    proxy_type  = "https"
  }
}

SSL证书:从申请到自动续期的IaC化管理

阿里云SSL证书服务(CAS)支持免费DV证书和付费OV/EV证书。Terraform可以自动化证书的申请、绑定和续期监控:


// ssl.tf
// 免费DV证书(一年期,自动DNS验证)
resource "alicloud_cas_certificate" "main" {
  cert_name = "example-com-cert"
  cert      = file("${path.module}/certs/example.com.pem")
  key       = file("${path.module}/certs/example.com.key")
}

// 或使用阿里云自动签发(需DNS验证)
resource "alicloud_cas_certificate" "auto" {
  cert_name = "auto-cert"
  domain    = "www.example.com"
  sans      = ["example.com", "api.example.com"]
}

// 证书绑定到CDN
resource "alicloud_cdn_domain_new" "https" {
  domain_name = "www.example.com"
  cdn_type    = "web"
  scope       = "overseas"

  sources {
    content  = "origin.example.com"
    type     = "domain"
    priority = 20
    port     = 443
    weight   = 10
  }

  certificate_config {
    server_certificate_status = "on"
    cert_type                 = "cas"
    cert_name                 = alicloud_cas_certificate.main.cert_name
  }
}

// 证书到期告警(CloudMonitor集成)
resource "alicloud_cms_alarm" "cert_expiry" {
  name      = "ssl-cert-expiry-alarm"
  project   = "acs_cas"
  metric    = "CertTimeLeft"
  period    = 86400  // 每天检查一次
  statistics = "Minimum"
  comparison_operator = "<="
  threshold = "30"    // 证书剩余有效期≤30天触发告警
  contact_groups = ["ops-team"]
}

Terraform管理SSL证书的最大好处是:当业务拥有数十个子域名时,证书的绑定关系(CDN、GA、WAF、SLB)全部在代码中清晰可查,彻底告别"证书过期导致线上事故"的窘境。

DNS云解析:域名记录即代码

阿里云云解析DNS(Alibaba Cloud DNS)支持权威解析和PrivateZone内网解析。Terraform可以同时管理公网和内网DNS记录:


// dns.tf
// 权威解析域名
resource "alicloud_dns_domain" "main" {
  domain_name = "example.com"
  group_id    = alicloud_dns_domain_group.main.id
}

// A记录:指向CDN CNAME
resource "alicloud_dns_record" "www" {
  name        = "www"
  domain_name = alicloud_dns_domain.main.domain_name
  type        = "CNAME"
  rr          = "www"
  value       = "${alicloud_cdn_domain_new.main.domain_name}.w.alikunlun.com"
  ttl         = 600
}

// A记录:指向GA加速IP
resource "alicloud_dns_record" "ga" {
  name        = "ga"
  domain_name = alicloud_dns_domain.main.domain_name
  type        = "A"
  rr          = "ga"
  value       = alicloud_ga_accelerator.main.cname
  ttl         = 300
}

// 亚太地域(新加坡)用户:智能解析指向GA节点
resource "alicloud_dns_record" "geo_ap_southeast" {
  name        = "www"
  domain_name = alicloud_dns_domain.main.domain_name
  type        = "A"
  rr          = "www"
  value       = alicloud_ga_accelerator.main.ip_address
  ttl         = 300
  line        = "apac_southeast"  // 智能解析线路
}

// PrivateZone:VPC内网私有DNS
resource "alicloud_pvtz_zone" "internal" {
  zone_name = "internal.example.com"
}

resource "alicloud_pvtz_zone_record" "db" {
  zone_id = alicloud_pvtz_zone.internal.id
  rr      = "db-master"
  type    = "A"
  value   = "10.0.1.100"
  ttl     = 60
}

DNS智能解析 vs 全球加速GA分流策略

策略实现方式延迟成本适合场景
DNS智能解析按地域返回不同IP低(DNS层面)免费静态多地域源站
GA加速器就近接入+骨干网转发极低(网络层)按带宽付费单地域源站全球加速
DNS+GA组合智能解析指向最近的GA节点最低中等全球低延迟高可用

一键编排:Terraform Module化

当六款产品的配置揉合在一个项目中时,推荐使用Terraform Module进行模块化封装。以下为整体项目结构示例:


alicloud-network-stack/
├── main.tf              // 顶层编排 + 变量定义
├── provider.tf           // Provider配置
├── variables.tf          // 输入变量
├── outputs.tf            // 输出(GA IP、CDN CNAME等)
├── modules/
│   ├── vpc/              // VPC模块
│   ├── cdn/              // CDN模块
│   ├── ga/               // GA模块
│   ├── waf/              // WAF模块
│   ├── ssl/              // SSL证书模块
│   └── dns/              // DNS模块
└── terraform.tfvars      // 变量赋值(按环境区分)

完整部署流程:


// main.tf - 顶层调用
module "vpc" {
  source     = "./modules/vpc"
  vpc_cidr   = var.vpc_cidr
  vsw_cidrs  = var.vsw_cidrs
  zone_ids   = var.zone_ids
}

module "ssl" {
  source     = "./modules/ssl"
  domain     = var.domain
}

module "cdn" {
  source      = "./modules/cdn"
  domain      = var.domain
  origin_host = var.origin_host
  cert_name   = module.ssl.cert_name
}

module "ga" {
  source      = "./modules/ga"
  bandwidth   = var.ga_bandwidth
  origin_ip   = var.origin_ip
}

module "waf" {
  source       = "./modules/waf"
  domain       = var.domain
  origin_ip    = var.origin_ip
}

module "dns" {
  source      = "./modules/dns"
  domain      = var.domain
  cdn_cname   = module.cdn.cname
  ga_ip       = module.ga.accelerator_ip
}

执行命令:


// 初始化
terraform init

// 预览变更(dry-run,不实际操作)
terraform plan

// 一键部署全部资源
terraform apply -auto-approve

// 销毁所有资源(谨慎使用)
terraform destroy

六大产品自动化部署对比

产品Terraform资源类型配置复杂度部署耗时回滚能力
VPCalicloud_vpc / alicloud_vswitch⭐⭐~60秒✅ terraform destroy
CDNalicloud_cdn_domain_new⭐⭐⭐5-10分钟(域名生效)⚠️ 需手动停用
GAalicloud_ga_accelerator⭐⭐⭐⭐3-5分钟✅
WAFalicloud_wafv3_domain⭐⭐⭐⭐2-3分钟✅
SSLalicloud_cas_certificate⭐⭐~30秒✅
DNSalicloud_dns_record⭐⭐即时✅(TTL影响生效时间)

总结

将阿里云国际版的VPC、CDN、GA、WAF、SSL证书和DNS云解析六大核心产品纳入Terraform管理,不仅能消除手动操作的不一致性,还能实现多环境复用、变更可追溯、团队协作标准化。从单次创建VPC到数十个域名的全链路加速部署,IaC的理念让云网络管理从"手工作坊"进化为"工程流水线"。如果你的团队正在或计划使用阿里云国际版构建全球化网络基础设施,现在就值得将Terraform引入运维体系。

本文由 2.chengzicloud.cloud 提供,点击访问首页了解更多

常见问题(FAQ)

Terraform状态文件(terraform.tfstate)应该存在哪里?

A: 生产环境强烈建议使用远程Backend存储,如阿里云OSS(Object Storage Service)。本地状态文件存在丢失和多成员协作冲突的风险。配置示例:


terraform {
backend "oss" {
bucket   = "terraform-state-prod"
key      = "network/terraform.tfstate"
region   = "ap-southeast-1"
// 通过环境变量 ALICLOUD_ACCESS_KEY / ALICLOUD_SECRET_KEY 认证
}
}
如何处理阿里云Terraform Provider尚未支持的资源?

A: 使用 alicloud_resource_manager_resource 通用资源或 null_resource + local-exec provisioner调用阿里云CLI(aliyun)作为补充。Provider覆盖率已超过85%,大部分核心网络产品均可Terraform管理。

CDN和GA的配置变更会影响线上业务吗?

A: CDN配置变更通常需要5-15分钟全网生效,期间新旧配置共存,不会中断服务。GA加速器配置变更(如带宽调整、终端节点修改)需1-3分钟,建议在业务低峰期操作并使用 terraform plan 充分预览变更范围。

WAF防护规则太严格导致误拦截怎么办?

A: 将WAF规则模板的 mode 从 "block" 改为 "monitor"(观察模式),监控一段时间确认无误报后再切换为阻断模式。Terraform中修改一行代码即可完成模式切换,无需在控制台逐条调整。