您可以通过Terraform配置流量调度器规则。本文以新增流量调度器规则为例进行介绍。
当前示例代码支持一键运行,您可以直接运行代码。一键运行
前提条件
由于阿里云账号(主账号)具有资源的所有权限,一旦发生泄露将面临重大风险。建议您使用RAM用户,并为该RAM用户创建AccessKey,具体操作方式请参见创建RAM用户和创建AccessKey。
为运行Terraform命令的RAM用户绑定以下最小权限策略,以获取管理本示例所涉及资源的权限。更多信息,请参见为RAM用户授权。
该权限策略允许RAM用户创建、查看和删除RAM角色,并支持对RAM角色权限策略的管理。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "slb:CreateLoadBalancer", "slb:DeleteLoadBalancer" ], "Resource": "*" } ] }
准备Terraform运行环境,您可以选择以下任一方式来使用Terraform。
在Terraform Explorer中使用Terraform:阿里云提供了Terraform的在线运行环境,您无需安装Terraform,登录后即可在线使用和体验Terraform。适用于零成本、快速、便捷地体验和调试Terraform的场景。
Cloud Shell:阿里云Cloud Shell中预装了Terraform的组件,并已配置好身份凭证,您可直接在Cloud Shell中运行Terraform的命令。适用于低成本、快速、便捷地访问和使用Terraform的场景。
在本地安装和配置Terraform:适用于网络连接较差或需要自定义开发环境的场景。
使用的资源
alicloud_ddoscoo_scheduler_rule:用于管理DDoS高防中的调度规则。
操作步骤
创建一个工作目录,并且在工作目录中创建以下名为
main.tf
的配置文件。main.tf:Terraform主文件,定义了将要部署的资源。以新增流量调度器规则为例介绍。
provider "alicloud" { region = var.region_id } variable "region_id" { type = string default = "cn-hangzhou" } variable "rule_name" { type = string default = "testDDos" } variable "rule_type" { type = number default = 3 } variable "rules" { type = list(object({ priority = number region_id = string type = string value = string value_type = number })) default = [ { priority = 100 region_id = "cn-hangzhou" type = "A" value = "127.0.XX.XX" value_type = 3 }, { priority = 50 region_id = "cn-hangzhou" type = "A" value = "127.0.XX.XX" value_type = 1 } ] } resource "alicloud_ddoscoo_scheduler_rule" "example" { rule_name = var.rule_name rule_type = var.rule_type dynamic "rules" { for_each = var.rules content { priority = rules.value.priority region_id = rules.value.region_id type = rules.value.type value = rules.value.value value_type = rules.value.value_type } } }
执行
terraform init
命令初始化Terraform运行环境。
结果预览:
执行
terraform apply
命令。在执行过程中,根据提示输入yes
并按下Enter键,等待命令执行完成,若出现以下信息,则表示授权完成。
结果预览:
操作验证。
执行terraform show命令
您可以使用以下命令查询Terraform已创建的资源详细信息:
terraform show
DDoS高防(中国内地)控台截图
登录DDoS高防控制台,查看端口创建。
清理资源
当您不再需要上述通过Terraform创建或管理的资源时,请运行以下命令以释放资源。关于terraform destroy
的更多信息,请参见Terraform常用命令。
terraform destroy
完整代码示例
当前示例代码支持一键运行,您可以直接运行代码。一键运行
provider "alicloud" {
region = var.region_id
}
variable "region_id" {
type = string
default = "cn-hangzhou"
}
variable "rule_name" {
type = string
default = "testDDos"
}
variable "rule_type" {
type = number
default = 3
}
variable "rules" {
type = list(object({
priority = number
region_id = string
type = string
value = string
value_type = number
}))
default = [
{
priority = 100
region_id = "cn-hangzhou"
type = "A"
value = "127.0.XX.XX"
value_type = 3
},
{
priority = 50
region_id = "cn-hangzhou"
type = "A"
value = "127.0.XX.XX"
value_type = 1
}
]
}
resource "alicloud_ddoscoo_scheduler_rule" "example" {
rule_name = var.rule_name
rule_type = var.rule_type
dynamic "rules" {
for_each = var.rules
content {
priority = rules.value.priority
region_id = rules.value.region_id
type = rules.value.type
value = rules.value.value
value_type = rules.value.value_type
}
}
}
相关文档
Terraform介绍,请参见Terraform产品介绍。
当您遇到由于网络延迟等原因造成的 terraform init 超时,导致无法正常下载 Provider 等情况时,请参见Terraform Init 加速方案配置。
关于如何配置Terraform的身份认证信息,请参见静配置身份认证。