通过Terraform配置流量调度器规则

您可以通过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:适用于网络连接较差或需要自定义开发环境的场景。

使用的资源

操作步骤

  1. 创建一个工作目录,并且在工作目录中创建以下名为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
        }
      }
    }
  2. 执行terraform init命令初始化Terraform运行环境。

结果预览:image

  1. 执行terraform apply命令。在执行过程中,根据提示输入yes并按下Enter键,等待命令执行完成,若出现以下信息,则表示授权完成。

结果预览:

image

  1. 操作验证。

执行terraform show命令

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

terraform show

image

DDoS高防(中国内地)控台截图

登录DDoS高防控制台,查看端口创建。

image

清理资源

当您不再需要上述通过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
    }
  }
}

相关文档