本文介绍 Terraform 的安装配置。
注意
本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
Terraform 是一个开源的 IT 基础设施编排工具,支持使用配置文件定义基础设施或应用。通过 Terraform,可以轻松的编排云防火墙的资源,例如创建和修改访问控制策略等。
您已熟悉Terraform的基础知识,包括Terraform介绍、安装Terraform以及Terraform工具指南。
本文互联网边界防火墙为例,使用Terraform依次添加地址簿、添加互联网边界防火墙策略、修改优先级、到清理资源。
地址簿名称 | 地址簿内容 | 地址簿类型 | 地址簿描述 |
---|---|---|---|
tf-test-ecs-ip | 10.0.0.1 | IP地址簿 | volc-terraform-test |
resource "volcengine_cfw_address_book" "ip_address_book_1" { group_name = "tf-test-ecs-ip" description = "volc-terraform-test" group_type = "ip" address_list = ["10.0.0.1","10.0.0.2"] }
注意
方向 | 规则优先级 | 访问源类型 | 访问源 | 访问目的类型 | 访问目的 | 协议类型 | 目的端口 | 生效时间 | 策略描述 | 动作 |
---|---|---|---|---|---|---|---|---|---|---|
入站 | 1 | IP | 1.1.1.1 | 地址簿 | tf-test-ecs-ip | TCP | 80 | 始终生效 | 放行1.1.1.1 | 观察 |
入站 | 2 | IP | 0.0.0.0/0 | IP | 0.0.0.0/0 | ANY | 0/65535 | 始终生效 | 全阻断兜底策略 | 阻断 |
resource "volcengine_cfw_control_policy" "create_1" { action = "accept" description = "放行1.1.1.1" destination = volcengine_cfw_address_book.ip_address_book_1.id destination_type = "group" direction = "in" priority = 1 proto = "TCP" dest_port = "80" dest_port_type = "port" repeat_type = "Permanent" source = "1.1.1.1" source_type = "net" status = true } resource "volcengine_cfw_control_policy" "create_2" { action = "deny" description = "全阻断兜底策略" destination = "0.0.0.0/0" destination_type = "net" direction = "in" priority = 2 proto = "ANY" repeat_type = "Permanent" source = "0.0.0.0/0" source_type = "net" status = true depends_on = [volcengine_cfw_control_policy.create_1] }
注意
方向 | 规则优先级 | 访问源类型 | 访问源 | 访问目的类型 | 访问目的 | 协议类型 | 目的端口 | 生效时间 | 策略描述 | 动作 |
---|---|---|---|---|---|---|---|---|---|---|
入站 | 1 | IP | 0.0.0.0/0 | IP | 0.0.0.0/0 | ANY | 0/65535 | 始终生效 | 全阻断兜底策略 | 阻断 |
入站 | 2 | IP | 1.1.1.1 | 地址簿 | tf-test-ecs-ip | TCP | 80 | 始终生效 | 放行1.1.1.1 | 观察 |
resource "volcengine_cfw_control_policy_priority" "prio_1" { direction = "in" rule_id = volcengine_cfw_control_policy.create_2.rule_id new_prio = 1 }
若需要将策略5(in5)和策略2(in2)的优先级批量修改分别改成优先级3和优先级4。
方向 | 规则优先级 | 访问源类型 | 访问源 | 访问目的类型 | 访问目的 | 协议类型 | 目的端口 | 生效时间 | 描述 | 动作 |
---|---|---|---|---|---|---|---|---|---|---|
入站 | 1 | IP | 0.0.0.0/0 | IP | 1.1.1.1 | ANY | 0/65535 | 始终生效 | in1 | 观察 |
入站 | 2 | IP | 0.0.0.0/0 | IP | 1.1.1.2 | ANY | 0/65535 | 始终生效 | in2 | 观察 |
入站 | 3 | IP | 0.0.0.0/0 | IP | 1.1.1.3 | ANY | 0/65535 | 始终生效 | in3 | 观察 |
入站 | 4 | IP | 0.0.0.0/0 | IP | 1.1.1.4 | ANY | 0/65535 | 始终生效 | in4 | 观察 |
入站 | 5 | IP | 0.0.0.0/0 | IP | 1.1.1.5 | ANY | 0/65535 | 始终生效 | in5 | 观察 |
入站 | 6 | IP | 0.0.0.0/0 | IP | 1.1.1.6 | ANY | 0/65535 | 始终生效 | in6 | 观察 |
错误示例:
resource "volcengine_cfw_control_policy_priority" "prio_in_2" { direction = "in" rule_id = volcengine_cfw_control_policy.in2.rule_id new_prio = 4 } resource "volcengine_cfw_control_policy_priority" "prio_in_5" { direction = "in" rule_id = volcengine_cfw_control_policy.in5.rule_id new_prio = 3 depends_on = [volcengine_cfw_control_policy_priority.prio_in_2] }
云防火墙系统将批量修改优先级分成两步修改。先修改策略5再修改策略2,则会出现以下状况:
方向 | 规则优先级 | 访问源类型 | 访问源 | 访问目的类型 | 访问目的 | 协议类型 | 目的端口 | 生效时间 | 描述 | 动作 |
---|---|---|---|---|---|---|---|---|---|---|
入站 | 1 | IP | 0.0.0.0/0 | IP | 1.1.1.1 | ANY | 0/65535 | 始终生效 | in1 | 观察 |
入站 | 2 | IP | 0.0.0.0/0 | IP | 1.1.1.2 | ANY | 0/65535 | 始终生效 | in2 | 观察 |
入站 | 3 | IP | 0.0.0.0/0 | IP | 1.1.1.5 | ANY | 0/65535 | 始终生效 | in5 | 观察 |
入站 | 4 | IP | 0.0.0.0/0 | IP | 1.1.1.3 | ANY | 0/65535 | 始终生效 | in3 | 观察 |
入站 | 5 | IP | 0.0.0.0/0 | IP | 1.1.1.4 | ANY | 0/65535 | 始终生效 | in4 | 观察 |
入站 | 6 | IP | 0.0.0.0/0 | IP | 1.1.1.6 | ANY | 0/65535 | 始终生效 | in6 | 观察 |
方向 | 规则优先级 | 访问源类型 | 访问源 | 访问目的类型 | 访问目的 | 协议类型 | 目的端口 | 生效时间 | 描述 | 动作 |
---|---|---|---|---|---|---|---|---|---|---|
入站 | 1 | IP | 0.0.0.0/0 | IP | 1.1.1.1 | ANY | 0/65535 | 始终生效 | in1 | 观察 |
入站 | 2 | IP | 0.0.0.0/0 | IP | 1.1.1.5 | ANY | 0/65535 | 始终生效 | in5 | 观察 |
入站 | 3 | IP | 0.0.0.0/0 | IP | 1.1.1.2 | ANY | 0/65535 | 始终生效 | in2 | 观察 |
入站 | 4 | IP | 0.0.0.0/0 | IP | 1.1.1.3 | ANY | 0/65535 | 始终生效 | in3 | 观察 |
入站 | 5 | IP | 0.0.0.0/0 | IP | 1.1.1.4 | ANY | 0/65535 | 始终生效 | in4 | 观察 |
入站 | 6 | IP | 0.0.0.0/0 | IP | 1.1.1.6 | ANY | 0/65535 | 始终生效 | in6 | 观察 |
实际结果:策略5变成优先级2,策略2变成优先级4。实际结果与预期不符。
terraform destroy