使用Terraform为ESA站点添加DNS记录

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

您可以参考以下简单的配置流程学习如何使用TerraformESA站点添加DNS记录。

涉及的资源

说明

Terraform方式不支持创建企业版,如果您需要购买企业版套餐,请联系我们

编写配置文件

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

定义供应商及Terraform版本

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

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

定义资源变量

为了提升代码复用性,进行输入变量和本地变量声明,需要创建一个名为 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"
}
# 套餐名称有效值如下
# 中国站:basic(基础版)、medium(标准版)、high(高级版)
#国际站:entranceplan_intl: Entrance版、basicplan_intl: Pro版、vipplan_intl: Premium版
variable "plan_name" {
  default = "high"
}
# 站点名称,需要替换为您的域名
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

    返回信息如下图则表示验证通过。

    image

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

    terraform plan

    image

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

    terraform apply

    image

验证结果

查看套餐

  1. 登录ESA控制台,在左侧导航栏选择计费管理 > 套餐管理

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

    image

查看站点

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

image

查看DNS记录

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

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

    image

(可选)清理资源

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

terraform destroy