全部产品
Search
文档中心

:使用Terraform创建套餐、创建站点、添加DNS记录

更新时间:Jun 17, 2026

站点接入ESA后,需要通过添加DNS记录的方式将待管理的域名添加至ESA,以确保待加速域名能被正常解析和访问。本文将为您介绍使用Terraform添加DNS记录。

涉及的资源

注意事项

  • 中国站账号与国际站账号能够创建的套餐类型存在差异

    • 中国站支持创建的套餐名称:

      • 免费版:entranceplan

      • 基础版:basic

      • 标准版:medium

      • 高级版:high

    • 国际站支持创建的套餐名称:

      • Entrance:entranceplan_intl

      • Pro:basicplan_intl

      • Premium:vipplan_intl

  • 暂不支持通过 Terraform 创建Enterprise套餐,如果您需要购买Enterprise套餐,请联系我们

  • 通过 Terraform 创建站点的时候,可以关联已有的企业版套餐实例ID

  • 通过 Terraform 创建套餐的时候,需要根据账号是中国站账号还是国际站账号来设置Terraform Provider信息

    • 方式1: 设置region参数值

      • 中国站:cn-hangzhou

      • 国际站:ap-southeast-1

    • 方式2: 设置account_type参数值

      • 中国站:Domestic

      • 国际站:International

编写配置文件

创建一个工作目录,并按照以下说明分别在工作目录中创建配置文件,并按照您的实际需求调整代码中的配置信息。

定义供应商及Terraform版本

首先需要创建一个名为 providers.tf 的配置文件,然后将以下代码复制到配置文件中,用于集中管理所有 Provider 配置和版本约束。

terraform {
  required_providers {
    alicloud = {
      source  = "aliyun/alicloud"
      version = "1.266.0"
    }
  }
}

provider "alicloud" {
  region = "ap-southeast-1"
}

定义资源变量

为了提升代码复用性,进行输入变量和本地变量声明,需要创建一个名为 variables.tf 的配置文件,并将以下代码复制到配置文件中。

# 站点的接入方式,可选CNAME和NS两种
variable "site_type" {
  default = "NS"
}
# 付费方式,有效值Subscription,不支持其他值
variable "payment_type" {
  default = "Subscription"
}
# 服务区域,取值如下
# domestic(中国内地)、overseas(全球不包含中国内地)、global(全球)
variable "coverage_name" {
  default = "overseas"
}
# 是否自动续费
variable "auto_pay" {
  default = "true"
}
# 套餐名称有效值如下
# entranceplan_intl(Entrance版)、basicplan_intl(Pro版)、vipplan_intl(Premium版)
variable "plan_name" {
  default = "entranceplan_intl"
}
# 站点名称,需要替换为您的域名
variable "site_name" {
  default = "aliyundoc.com"
}
# 源站值,您的源站域名
variable "record_value" {
  default = "www.example.com"
}
# 回源端口,您源站的端口号
variable "record_port" {
  default = "80"
}
# DNS记录值,即加速域名
variable "record_name" {
  default = "_udp._sip.aliyundoc.com"
}
# DNS记录类型
variable "record_type" {
  default = "SRV"
}

定义资源

最后创建一个名为 main.tf 的配置文件并将以下代码复制到配置文件中,作为各资源声明主入口。

# 创建套餐
resource "alicloud_esa_rate_plan_instance" "my_plan" {
  type         = var.site_type
  auto_renew   = "false"
  period       = "1"
  payment_type = var.payment_type
  coverage     = var.coverage_name
  auto_pay     = var.auto_pay
  plan_name    = var.plan_name
}

# 创建站点
resource "alicloud_esa_site" "my_site" {
  site_name   = var.site_name
  instance_id = alicloud_esa_rate_plan_instance.my_plan.id
  coverage    = var.coverage_name
  access_type = var.site_type
}

# 添加DNS记录
resource "alicloud_esa_record" "my_record" {
  data {
    value    = var.record_value
    weight   = "1"
    priority = "1"
    port     = var.record_port
  }

  ttl         = "100"
  record_name = var.record_name
  comment     = "This is a remark"
  site_id     = alicloud_esa_site.my_site.id
  record_type = var.record_type
}

创建资源

  1. 进入配置文件所在目录,执行如下命令,初始化Terraform环境。

    terraform init
  2. 执行如下命令,验证Terraform语法与配置。

    terraform validate
  3. 执行如下命令,预览执行结果。

    terraform plan
  4. 执行如下命令,执行Terraform脚本。

    terraform apply
  5. 依据提示输入yes确认执行即可。

验证结果

查看套餐

  1. 登录ESA控制台,进入套餐管理

  2. 在套餐管理页面看到新增套餐,如下图所示。

    image

查看站点

在ESA控制台,选择站点管理可以看到新增的站点,如下图所示。

image

查看DNS记录

  1. 在ESA控制台选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择DNS > 记录可以看到新增的DNS记录,如下图所示。

    image

(可选)清理资源

当您不再需要上述通过Terraform创建或管理的资源时,请运行terraform destroy命令以释放资源。

terraform destroy