Terraform参考
Terraform是一个开源的基础设施即代码工具,允许开发人员通过声明式的语言来定义和管理基础设施的配置,提供了一种简洁的方式来添加、修改或删除ESA资源,减少手动操作的繁琐和错误,提高基础设施的可管理性和可维护性。您可以参考本文学习如何安装与配置Terraform,以及如何添加并配置ESA站点。
支持的资源列表
Resources
安装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
通过控制台验证
在ESA控制台,选择站点管理。在站点列表中可以查看到通过Terraform新增的站点条目。