Terraform参考

更新时间: 2025-04-21 17:52:14

Terraform是一个开源的基础设施即代码工具,允许开发人员通过声明式的语言来定义和管理基础设施的配置,提供了一种简洁的方式来添加、修改或删除ESA资源,减少手动操作的繁琐和错误,提高基础设施的可管理性和可维护性。您可以参考本文学习如何安装与配置Terraform,以及如何添加并配置ESA站点。

支持的资源列表

Resources

alicloud_esa_cache_reserve_instance:提供 ESA缓存预留实例资源。创建了一个缓存预留实例,开启自动续费,为云存储加速服务预分配高吞吐缓存资源,提升高频访问数据的响应性能。

alicloud_esa_cache_rule:提供 ESA 缓存规则资源。配置缓存规则边缘节点遵循源站缓存策略、浏览器禁用缓存、忽略查询字符串差异,并包含特定Cookie/Header缓存控制参数。

alicloud_esa_certificate:提供 ESA证书资源。自动申请并部署免费的Let's Encrypt SSL证书,实现HTTPS通信加密。

alicloud_esa_client_ca_certificate:提供 ESA 客户端CA证书资源。上传客户端CA根证书,用于双向TLS认证(mTLS)场景下验证客户端证书的合法性,确保仅允许受信任CA签发的客户端证书访问服务。

alicloud_esa_client_certificate:提供 ESA 客户端证书资源。创建RSA加密客户端证书,用于实现双向TLS认证(mTLS)场景下的客户端身份强验证。

alicloud_esa_compression_rule:提供 ESA 压缩规则资源。域名配置压缩规则,为后续按需开启特定压缩策略提供预置条件。

alicloud_esa_edge_container_app:提供 ESA Edge 容器应用程序资源。创建容器应用,将外部流量转发至容器内部,并配置L7层健康检查(HEAD方法检测/路径,每5秒一次,超时3秒,连续2次成功/5次失败触发状态变更),实现容器服务的自动化健康监控与故障隔离。

alicloud_esa_edge_container_app_record:提供 ESA Edge 容器应用程序记录资源。部署边缘容器应用,配置L7层健康检查(HEAD方法检测/路径),同时绑定域名实现流量调度,需确保容器3000端口服务可用且健康检查参数与业务匹配。

alicloud_esa_http_request_header_modification_rule:提供 ESA Http 请求标头修改规则资源。配置请求头修改规则,修改请求头的值,为后续流量精细化调试提供预置规则支持。

alicloud_esa_http_response_header_modification_rule:提供 ESA Http 响应报头修改规则资源。对域名流量启用响应头修改规则(增/删/改Header),新增exampleadd头、删除exampledel头、修改examplemodify头值,实现基于业务场景的HTTP响应头精细化管控。

alicloud_esa_https_application_configuration:提供 ESA Https 应用程序配置资源。域名的请求配置了包含HSTS最长有效期的HTTPS应用层参数,启用规则、HSTS强制、Alt-SVC等安全扩展功能。

alicloud_esa_https_basic_configuration:提供 ESA Https 基本配置资源。强制启用全局HTTPS加密策略。

alicloud_esa_image_transform:提供 ESA 图像转换资源。为域名配置图像格式转换规则。

alicloud_esa_kv_namespace:提供 ESA KV 命名空间资源。创建namespace 的键值(Key-Value)存储命名空间,用于隔离存储和管理安全策略、动态规则等配置数据(如API密钥、灰度参数),为安全加速提供可热更新的轻量级元数据管理能力。

alicloud_esa_list:提供 ESA 列表资源。查看ESA的站点列表。

alicloud_esa_network_optimization:提供 ESA 网络优化资源。为匹配域名的请求配置网络优化规则,支持WebSocket/gRPC/HTTP2回源协议,同时限制文件上传最大尺寸,实现针对特定业务流量的网络传输优化与安全管控。

alicloud_esa_origin_pool:提供 ESA 源池资源。配置多源站混合池,包含一个阿里云OSS源站(跨账号密钥认证)和两个兼容S3协议的私有存储源站(AWS v2签名认证),实现跨国流量按比例分发至不同云存储服务,同时通过Host头重写和TLS SNI保障回源兼容性。

alicloud_esa_origin_rule:提供 ESA Origin Rule 资源。通过HTTP协议将流量转发至源站的端口,并启用Host头传递、SNI扩展及分块传输(Range)支持。

alicloud_esa_page:提供 ESA 页面资源。创建了一个自定义错误页面资源,Base64编码的HTML模板(解码后为标准的403禁止访问页面,含中文语言声明)。

alicloud_esa_rate_plan_instance:提供 ESA Rate Plan 实例资源。通过包年包月方式创建NS类型资费实例,启用自动续费和自动支付,为后续部署全球加速服务(如站点、路由规则等)提供基础资源配额和计费框架。

alicloud_esa_record:提供 ESA 记录资源。添加记录,设置优先级、权重、TTL,实现基于DNS协议的服务发现与负载均衡。

alicloud_esa_redirect_rule:提供 ESA 重定向规则资源。配置301永久重定向规则,自动跳转至静态目标地址,同时保留原始请求的查询参数。

alicloud_esa_rewrite_url_rule:提供 ESA 重写 URL 规则资源。启用URL重写规则,将路径静态重写且固定查询参数,实现精准的请求路径控制与参数规范化。

alicloud_esa_site:提供 ESA 站点资源。通过订阅购买基础版的NS类型全球加速实例,创建站点,将站点与资源组绑定,实现全球网络加速能力的自动化部署。

alicloud_esa_site_delivery_task:提供 ESA 站点交付任务资源。配置HTTP日志投递任务,通过gzip压缩将包含12个关键监控字段的日志数据实时传输至目标地址,设置单次最大批量、重试机制及超时控制,保障日志传输的可靠性与时效性。

alicloud_esa_waiting_room:提供 ESA 等候室资源。配置等待室,包含基于FIFO队列的流量管控规则(活跃用户上限、会话时长、多子域路径配置),为突发流量场景提供预置的灰度管控能力。

alicloud_esa_waiting_room_event:提供 ESA 等候室事件资源。配置等待室及其事件规则,用于在需要时通过队列管理机制FIFO控制突发流量,防止服务端过载。

alicloud_esa_waiting_room_rule:提供 ESA 等候室规则资源。基于规则对符合流量匹配条件的请求在突发高流量时自动启用等待室机制进行排队管控,从而有效防止服务器过载。

安装Terraform并配置权限

在本地安装和配置Terraform

您可以参考安装和配置Terraform,在本地使用Terraform。

  • 由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey

  • 创建环境变量,用于存放身份认证信息。

    AccessKey管理页面上创建和查看您的AccessKey。

    若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。

使用在线服务(免安装和权限配置)

如果您不想安装Terraform,可以直接使用在线服务Cloud Shell

阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见Cloud Shell

重要

通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制

Terraform添加并配置ESA站点

步骤一:创建脚本

创建一个工作目录,并在该工作目录中创建名为main.tf的配置文件,在main.tf中增加以下代码:

# 定义一个变量 "name",默认值为 "terraform-example",用于资源命名
variable "name" {
  default = "terraform-example"
}

# 配置阿里云提供程序,指定区域为 "cn-hangzhou"
provider "alicloud" {
  region = "cn-hangzhou"
}

# 获取阿里云资源管理器中的默认资源组列表(用于后续资源的归属)
data "alicloud_resource_manager_resource_groups" "default" {
  # 无参数配置,直接获取所有资源组
}

# 创建阿里云 ESA(Enterprise Service Anywhere)计费计划实例
resource "alicloud_esa_rate_plan_instance" "defaultIEoDfU" {
  type         = "NS"          # 计费类型(NS 表示网络服务)
  auto_renew   = true          # 自动续费
  period       = "1"           # 购买周期(单位:年)
  payment_type = "Subscription" # 支付类型(订阅模式)
  coverage     = "overseas"    # 服务覆盖范围(海外)
  auto_pay     = true          # 自动支付
  plan_name    = "basic"       # 基础套餐名称
}

# 生成一个随机整数(范围 10000-99999),用于动态生成唯一站点名称
resource "random_integer" "default" {
  min = 10000 # 最小值
  max = 99999 # 最大值
}

# 创建阿里云 ESA 站点,使用随机数生成唯一域名并关联计费实例
resource "alicloud_esa_site" "default" {
  site_name         = "bcd${random_integer.default.result}.com" # 站点名称(包含随机数确保唯一性)
  coverage          = "overseas"                                # 服务覆盖范围(海外)
  access_type       = "NS"                                      # 访问类型(网络服务)
  instance_id       = alicloud_esa_rate_plan_instance.defaultIEoDfU.id # 关联计费实例的 ID
  resource_group_id = data.alicloud_resource_manager_resource_groups.default.ids.0 # 使用第一个默认资源组的 ID
}

步骤二:初始化Terraform运行环境。

terraform init

返回信息如下,Terraform初始化成功。

Initializing the backend...
Initializing provider plugins...
...
Terraform has been successfully initialized!
...

步骤三:执行计划

terraform apply

在执行过程中,根据提示输入yes并按下Enter键,等待命令执行完成,若出现以下信息,则表示添加加速域名成功。

You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes


Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

执行完成提示如下。

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

验证结果

通过命令行指令验证

您可以使用以下命令查询Terraform已创建的资源详细信息:

terraform show

image

通过控制台验证

在ESA控制台,选择站点管理在站点列表中可以查看到通过Terraform新增的站点条目。

image

上一篇: 版本说明 下一篇: 使用Terraform为ESA站点添加DNS记录