Terraform创建阿里云基础组件资源

Terraform(一)安装使用,阿里云创建资源 是一种开源工具,用于安全高效地预览、配置和管理云基础架构和资源。可以有效地构建、更改和版本控制基础设施的工具(基础架构自动化的编排工具)。它的目标是 “Write, Plan, and create Infrastructure as Code”, 基础架构即代码。Terraform 几乎可以支持所有市面上能见到的云服务。 阅读详情
这里首先要找到阿里云的官方使用说明:

中文版:Terraform(Terraform)-阿里云帮助中心

英文版:Terraform Registry

各自创建一个阿里云的RAM子账号,并给与OPAPI的调用权限,(就是有aksk,生成好之后保存下.)

创建路径:

登陆阿里云主账号-->控制台-->右上角企业-->人员权限管理--用户--创建用户

创建好之后会让你保存csv格式的aksk.保存下来备用
配置本地环境变量配置方法参见,或者直接写到代码中(不太安全)
给子账号授权

这里授权的权限是ecs与vpc的所有权限.根据个人需求自定义.

Terraform本地windows部署-优快云博客

如果使用vscode这类编辑工具的话可以直接使用如下方式定义本地环境变量.
export ALICLOUD_ACCESS_KEY="<yourAccessKeyID>"
export ALICLOUD_SECRET_KEY="<yourAccessKeySecret>"
export ALICLOUD_REGION="cn-beijing"
终于环境变量如何引用后面会提.
创建资源所需文件
创建main.tf文件

这里说明一下,其中有三个注释项目,就是上面设置的三个环境变量,这里如果不填入,或者直接注释掉系统就自动会从环境变量中调用.调用的位置只有这里,其他位置不需要额外配置调用内容,

#main.tf

#这里原本可以用来指定阿里云上创建大好的AKSK以及地域信息.这里因为使用了环境变量的形式,所以就给注释掉了.
provider "alicloud" {
  # access_key = var.alicloud_access_key
  # secret_key = var.alicloud_secret_key
  # region     = var.region
}

------------------
#创建安全组相关信息
resource "alicloud_security_group" "default" {
  security_group_name = "terraform-example"    #安全组名字
  vpc_id              = alicloud_vpc.default.id    #关联的vpc的id号码
  security_group_type = "normal"    #安全组类型是普通类型,还有企业类型的这里没设置.需要的话另说.
}


resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
  count = length(var.tcp_rules)    #动态创建多条规则时使用,同时定义多个端口号count统计所有端口号的总和,   
  type              = "ingress"    #入方向ingress,出方向egress
  ip_protocol       = "tcp"        #tcp协议
  nic_type          = "intranet"   #网络类型,这里表示内网规则internet表示外网,这里是内网
  policy            = "accept"     #表示允许流量通过,drop表示禁止流量通过
  port_range        = var.tcp_rules[count.index]    #配置端口范围,这里因为是配置了多个端口,所以使用了一个列表+下标索引进行配置,
  priority          = 1    #流量进出优先级,范围是i1-100,数值越小优先级越高.
  security_group_id = alicloud_security_group.default.id    #安全组id,用来关联这一大段规则属于哪个安全组,
  cidr_ip           = "0.0.0.0/0"    #允许IP访问范围.
}

#出网流量.这里不做解释.跟上面的入网条目类似,区别在于

resource "alicloud_security_group_rule" "allow_all_tcp_egress" {
  type              = "egress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "1/65535"
  priority          = 1
  security_group_id = alicloud_security_group.default.id
  cidr_ip           = "0.0.0.0/0"
}


#定义变量,这里定义了一堆端口号,
variable "tcp_rules" {
  type    = list(string)
  default = ["80/80", "443/443", "8080/8080", "3306/3306", "22/22"]
}
#这里定义了vpc名字
variable "vpc_name" {
  type    = string
  default = "tf-vpc"
}

----------------
#定义一个版本相关信息,
terraform {
  required_providers {
    alicloud = {
      source = "aliyun/alicloud"
      version = "1.249.0"
    }
  }
}

--------------
#创建vpc
resource "alicloud_vpc" "default" {
#  ipv6_isp    = "BGP"    #指定运营商,这里表示阿里云BGP多线提供
  description = "test"    #vpc描述信息
  cidr_block  = "10.0.0.0/12"    #网段划分,这里是指整个vpc的网段,避免过小导致vpc内的ip数量不足.
  vpc_name    = "tf-vpc"    #vpc名字
  enable_ipv6 = true    #是否启用ipv6功能.
}

上面的内容可以定义在一个或者多个文件中,看自己需求.

初始化创建资源
#初始化资源
34826@DESKTOP-FRSFPNH MINGW64 /e/GOPATH/src/terraform
$ terraform.exe init

Initializing the backend...
Initializing provider plugins...
- Reusing previous version of aliyun/alicloud from the dependency lock file
- Using previously-installed aliyun/alicloud v1.249.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see  
any changes that are required for your infrastructure. All Terraform commands  
should now work.

If you ever set or change modules or backend configuration for Terraform,      
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

#这里说明初始化成功

代码检查

-----------
代码内容检查
34826@DESKTOP-FRSFPNH MINGW64 /e/GOPATH/src/terraform
$ terraform.exe validate -json

{
  "format_version": "1.0",
  "valid": true,
  "error_count": 0,
  "warning_count": 0,
  "diagnostics": []
}
查看执行计划
34826@DESKTOP-FRSFPNH MINGW64 /e/GOPATH/src/terraform
$ terraform.exe plan

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # alicloud_security_group.default will be created
  + resource "alicloud_security_group" "default" {
      + create_time         = (known after apply)
      + id                  = (known after apply)
      + inner_access        = (known after apply)
      + inner_access_policy = (known after apply)
      + name                = (known after apply)
      + security_group_name = "terraform-example"
      + security_group_type = "normal"
      + vpc_id              = (known after apply)
    }

  # alicloud_security_group_rule.allow_all_tcp_egress will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_egress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "1/65535"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "egress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[0] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "80/80"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[1] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "443/443"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[2] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "8080/8080"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[3] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "3306/3306"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[4] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "22/22"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_vpc.default will be created
  + resource "alicloud_vpc" "default" {
      + cidr_block                                  = "10.0.0.0/12"
      + create_time                                 = (known after apply)
      + description                                 = "test"
      + dns_hostname_status                         = (known after apply)
      + enable_ipv6                                 = true
      + id                                          = (known after apply)
      + ipv6_cidr_block                             = (known after apply)
      + ipv6_cidr_blocks                            = (known after apply)
      + ipv6_isp                                    = "BGP"
      + name                                        = (known after apply)
      + region_id                                   = (known after apply)
      + resource_group_id                           = (known after apply)
      + route_table_id                              = (known after apply)
      + router_id                                   = (known after apply)
      + router_table_id                             = (known after apply)
      + secondary_cidr_blocks                       = (known after apply)
      + status                                      = (known after apply)
      + system_route_table_route_propagation_enable = (known after apply)
      + user_cidrs                                  = (known after apply)
      + vpc_name                                    = "tf-vpc"
    }

  # alicloud_vswitch.main will be created
  + resource "alicloud_vswitch" "main" {
      + availability_zone    = (known after apply)
      + cidr_block           = "10.0.0.0/16"
      + create_time          = (known after apply)
      + id                   = (known after apply)
      + ipv6_cidr_block      = (known after apply)
      + ipv6_cidr_block_mask = (known after apply)
      + name                 = (known after apply)
      + status               = (known after apply)
      + vpc_id               = (known after apply)
      + vswitch_name         = (known after apply)
      + zone_id              = "cn-beijing-b"
    }

Plan: 9 to add, 0 to change, 0 to destroy.

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 

Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.

这里可以自己检查下要创建的资源是否都包含在其中,不要因为有些参数没加载成功出现资源漏创建的情况.

执行创建操作
#执行创建操作,
34826@DESKTOP-FRSFPNH MINGW64 /e/GOPATH/src/terraform
$ terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # alicloud_security_group.default will be created
  + resource "alicloud_security_group" "default" {
      + create_time         = (known after apply)
      + id                  = (known after apply)
      + inner_access        = (known after apply)
      + inner_access_policy = (known after apply)
      + name                = (known after apply)
      + security_group_name = "terraform-example"
      + security_group_type = "normal"
      + vpc_id              = (known after apply)
    }

  # alicloud_security_group_rule.allow_all_tcp_egress will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_egress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "1/65535"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "egress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[0] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "80/80"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[1] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "443/443"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[2] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "8080/8080"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[3] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "3306/3306"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[4] will be created
  + resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      + cidr_ip                = "0.0.0.0/0"
      + id                     = (known after apply)
      + ip_protocol            = "tcp"
      + nic_type               = "intranet"
      + policy                 = "accept"
      + port_range             = "22/22"
      + prefix_list_id         = (known after apply)
      + priority               = 1
      + security_group_id      = (known after apply)
      + security_group_rule_id = (known after apply)
      + type                   = "ingress"
    }

  # alicloud_vpc.default will be created
  + resource "alicloud_vpc" "default" {
      + cidr_block                                  = "10.0.0.0/12"
      + create_time                                 = (known after apply)
      + description                                 = "test"
      + dns_hostname_status                         = (known after apply)
      + enable_ipv6                                 = true
      + id                                          = (known after apply)
      + ipv6_cidr_block                             = (known after apply)
      + ipv6_cidr_blocks                            = (known after apply)
      + ipv6_isp                                    = "BGP"
      + name                                        = (known after apply)
      + region_id                                   = (known after apply)
      + resource_group_id                           = (known after apply)
      + route_table_id                              = (known after apply)
      + router_id                                   = (known after apply)
      + router_table_id                             = (known after apply)
      + secondary_cidr_blocks                       = (known after apply)
      + status                                      = (known after apply)
      + system_route_table_route_propagation_enable = (known after apply)
      + user_cidrs                                  = (known after apply)
      + vpc_name                                    = "tf-vpc"
    }

  # alicloud_vswitch.main will be created
  + resource "alicloud_vswitch" "main" {
      + availability_zone    = (known after apply)
      + cidr_block           = "10.0.0.0/16"
      + create_time          = (known after apply)
      + id                   = (known after apply)
      + ipv6_cidr_block      = (known after apply)
      + ipv6_cidr_block_mask = (known after apply)
      + name                 = (known after apply)
      + status               = (known after apply)
      + vpc_id               = (known after apply)
      + vswitch_name         = (known after apply)
      + zone_id              = "cn-beijing-b"
    }

Plan: 9 to add, 0 to change, 0 to destroy.

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

alicloud_vpc.default: Creating...
alicloud_vpc.default: Creation complete after 7s [id=vpc-2ze7fwv7cpnu8iy265ptf]
alicloud_vswitch.main: Creating...
alicloud_security_group.default: Creating...
alicloud_security_group.default: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg]
alicloud_security_group_rule.allow_all_tcp_ingress[4]: Creating...
alicloud_security_group_rule.allow_all_tcp_egress: Creating...
alicloud_security_group_rule.allow_all_tcp_ingress[1]: Creating...
alicloud_security_group_rule.allow_all_tcp_ingress[0]: Creating...
alicloud_security_group_rule.allow_all_tcp_ingress[2]: Creating...
alicloud_security_group_rule.allow_all_tcp_ingress[3]: Creating...
alicloud_security_group_rule.allow_all_tcp_egress: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg:egress:tcp:1/65535:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[0]: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:80/80:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[2]: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:8080/8080:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[1]: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[3]: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:3306/3306:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[4]: Creation complete after 1s [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
alicloud_vswitch.main: Creation complete after 4s [id=vsw-2zerm02oxz9z1kp064jrw]

Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
登陆阿里云检查是否创建成功
vpc:

交换机:

ecs-->安全组

资源创建成功.

释放资源
34826@DESKTOP-FRSFPNH MINGW64 /e/GOPATH/src/terraform
$ terraform destroy
alicloud_vpc.default: Refreshing state... [id=vpc-2ze7fwv7cpnu8iy265ptf]
alicloud_security_group.default: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg]
alicloud_vswitch.main: Refreshing state... [id=vsw-2zerm02oxz9z1kp064jrw]
alicloud_security_group_rule.allow_all_tcp_egress: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg:egress:tcp:1/65535:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[4]: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[1]: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[2]: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:8080/8080:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[3]: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:3306/3306:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[0]: Refreshing state... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:80/80:intranet:0.0.0.0/0:accept:1]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # alicloud_security_group.default will be destroyed
  - resource "alicloud_security_group" "default" {
      - create_time         = "2025-05-23T10:23:59Z" -> null
      - id                  = "sg-2zei6vhmj9odactm3zmg" -> null
      - inner_access        = true -> null
      - inner_access_policy = "Accept" -> null
      - name                = "terraform-example" -> null
      - security_group_name = "terraform-example" -> null
      - security_group_type = "normal" -> null
      - tags                = {} -> null
      - vpc_id              = "vpc-2ze7fwv7cpnu8iy265ptf" -> null
        # (2 unchanged attributes hidden)
    }

  # alicloud_security_group_rule.allow_all_tcp_egress will be destroyed
  - resource "alicloud_security_group_rule" "allow_all_tcp_egress" {
      - cidr_ip                    = "0.0.0.0/0" -> null
      - id                         = "sg-2zei6vhmj9odactm3zmg:egress:tcp:1/65535:intranet:0.0.0.0/0:accept:1" -> null
      - ip_protocol                = "tcp" -> null
      - nic_type                   = "intranet" -> null
      - policy                     = "accept" -> null
      - port_range                 = "1/65535" -> null
      - priority                   = 1 -> null
      - security_group_id          = "sg-2zei6vhmj9odactm3zmg" -> null
      - security_group_rule_id     = "sgr-2ze0arx65gjwu4jws1sf" -> null
      - type                       = "egress" -> null
        # (5 unchanged attributes hidden)
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[0] will be destroyed
  - resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      - cidr_ip                    = "0.0.0.0/0" -> null
      - id                         = "sg-2zei6vhmj9odactm3zmg:ingress:tcp:80/80:intranet:0.0.0.0/0:accept:1" -> null
      - ip_protocol                = "tcp" -> null
      - nic_type                   = "intranet" -> null
      - policy                     = "accept" -> null
      - port_range                 = "80/80" -> null
      - priority                   = 1 -> null
      - security_group_id          = "sg-2zei6vhmj9odactm3zmg" -> null
      - security_group_rule_id     = "sgr-2ze8adp4bid9tf56l24x" -> null
      - type                       = "ingress" -> null
        # (5 unchanged attributes hidden)
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[1] will be destroyed
  - resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      - cidr_ip                    = "0.0.0.0/0" -> null
      - id                         = "sg-2zei6vhmj9odactm3zmg:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1" -> null
      - ip_protocol                = "tcp" -> null
      - nic_type                   = "intranet" -> null
      - policy                     = "accept" -> null
      - port_range                 = "443/443" -> null
      - priority                   = 1 -> null
      - security_group_id          = "sg-2zei6vhmj9odactm3zmg" -> null
      - security_group_rule_id     = "sgr-2ze3k611m1jf9lhv7z9t" -> null
      - type                       = "ingress" -> null
        # (5 unchanged attributes hidden)
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[2] will be destroyed
  - resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      - cidr_ip                    = "0.0.0.0/0" -> null
      - id                         = "sg-2zei6vhmj9odactm3zmg:ingress:tcp:8080/8080:intranet:0.0.0.0/0:accept:1" -> null
      - ip_protocol                = "tcp" -> null
      - nic_type                   = "intranet" -> null
      - policy                     = "accept" -> null
      - port_range                 = "8080/8080" -> null
      - priority                   = 1 -> null
      - security_group_id          = "sg-2zei6vhmj9odactm3zmg" -> null
      - security_group_rule_id     = "sgr-2ze79n9hu282um50noj2" -> null
      - type                       = "ingress" -> null
        # (5 unchanged attributes hidden)
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[3] will be destroyed
  - resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      - cidr_ip                    = "0.0.0.0/0" -> null
      - id                         = "sg-2zei6vhmj9odactm3zmg:ingress:tcp:3306/3306:intranet:0.0.0.0/0:accept:1" -> null
      - ip_protocol                = "tcp" -> null
      - nic_type                   = "intranet" -> null
      - policy                     = "accept" -> null
      - port_range                 = "3306/3306" -> null
      - priority                   = 1 -> null
      - security_group_id          = "sg-2zei6vhmj9odactm3zmg" -> null
      - security_group_rule_id     = "sgr-2zej25002q98mn93498d" -> null
      - type                       = "ingress" -> null
        # (5 unchanged attributes hidden)
    }

  # alicloud_security_group_rule.allow_all_tcp_ingress[4] will be destroyed
  - resource "alicloud_security_group_rule" "allow_all_tcp_ingress" {
      - cidr_ip                    = "0.0.0.0/0" -> null
      - id                         = "sg-2zei6vhmj9odactm3zmg:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1" -> null
      - ip_protocol                = "tcp" -> null
      - nic_type                   = "intranet" -> null
      - policy                     = "accept" -> null
      - port_range                 = "22/22" -> null
      - priority                   = 1 -> null
      - security_group_id          = "sg-2zei6vhmj9odactm3zmg" -> null
      - security_group_rule_id     = "sgr-2zeb98gdsh1n8xll6voj" -> null
      - type                       = "ingress" -> null
        # (5 unchanged attributes hidden)
    }

  # alicloud_vpc.default will be destroyed
  - resource "alicloud_vpc" "default" {
      - cidr_block                                  = "10.0.0.0/12" -> null
      - classic_link_enabled                        = false -> null
      - create_time                                 = "2025-05-23T10:23:52Z" -> null
      - description                                 = "test" -> null
      - dns_hostname_status                         = "DISABLED" -> null
      - enable_ipv6                                 = true -> null
      - id                                          = "vpc-2ze7fwv7cpnu8iy265ptf" -> null
      - ipv6_cidr_block                             = "2408:400a:73b:2a00::/56" -> null
      - ipv6_cidr_blocks                            = [
          - {
              - ipv6_cidr_block = "2408:400a:73b:2a00::/56"
              - ipv6_isp        = "BGP"
            },
        ] -> null
      - ipv6_isp                                    = "BGP" -> null
      - name                                        = "tf-vpc" -> null
      - region_id                                   = "cn-beijing" -> null
      - resource_group_id                           = "rg-acfm2d7xyl7us2a" -> null
      - route_table_id                              = "vtb-2ze5jelvopjsqidcc33ed" -> null
      - router_id                                   = "vrt-2ze5qp3bdj97nvlozegvo" -> null
      - router_table_id                             = "vtb-2ze5jelvopjsqidcc33ed" -> null
      - secondary_cidr_blocks                       = [] -> null
      - status                                      = "Available" -> null
      - system_route_table_route_propagation_enable = true -> null
      - tags                                        = {} -> null
      - user_cidrs                                  = [] -> null
      - vpc_name                                    = "tf-vpc" -> null
        # (2 unchanged attributes hidden)
    }

  # alicloud_vswitch.main will be destroyed
  - resource "alicloud_vswitch" "main" {
      - availability_zone = "cn-beijing-b" -> null
      - cidr_block        = "10.0.0.0/16" -> null
      - create_time       = "2025-05-23T10:23:58Z" -> null
      - id                = "vsw-2zerm02oxz9z1kp064jrw" -> null
        name              = null
      - status            = "Available" -> null
      - tags              = {} -> null
      - vpc_id            = "vpc-2ze7fwv7cpnu8iy265ptf" -> null
      - zone_id           = "cn-beijing-b" -> null
        # (3 unchanged attributes hidden)
    }

Plan: 0 to add, 0 to change, 9 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

alicloud_security_group_rule.allow_all_tcp_egress: Destroying... [id=sg-2zei6vhmj9odactm3zmg:egress:tcp:1/65535:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[0]: Destroying... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:80/80:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[4]: Destroying... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
alicloud_vswitch.main: Destroying... [id=vsw-2zerm02oxz9z1kp064jrw]
alicloud_security_group_rule.allow_all_tcp_ingress[2]: Destroying... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:8080/8080:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[3]: Destroying... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:3306/3306:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[1]: Destroying... [id=sg-2zei6vhmj9odactm3zmg:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_all_tcp_ingress[2]: Destruction complete after 1s
alicloud_security_group_rule.allow_all_tcp_ingress[3]: Destruction complete after 1s
alicloud_security_group_rule.allow_all_tcp_ingress[0]: Destruction complete after 1s
alicloud_security_group_rule.allow_all_tcp_egress: Destruction complete after 1s
alicloud_security_group_rule.allow_all_tcp_ingress[1]: Destruction complete after 1s
alicloud_security_group_rule.allow_all_tcp_ingress[4]: Destruction complete after 1s
alicloud_security_group.default: Destroying... [id=sg-2zei6vhmj9odactm3zmg]
alicloud_security_group.default: Destruction complete after 0s
alicloud_vswitch.main: Destruction complete after 4s
alicloud_vpc.default: Destroying... [id=vpc-2ze7fwv7cpnu8iy265ptf]
alicloud_vpc.default: Destruction complete after 6s

Destroy complete! Resources: 9 destroyed.

登陆页面验证:

资源释放成功

其他功能后续会陆续补充.

Terraform操作阿里云实例 *Terraform使用* 使用配置文件来描述需要管理的基础架构,根据配置文件生成一个执行计划,计划描述了要做来达到所需要的状态,然后执行计划来构建描述的基础架构。可以增量的执行计划。 配置文件使用语法:HCL(HashiCorp Configuration Language) 下面会以阿里云创建虚拟机为例,描述一下实际如何使用Terraform来操作阿里云上的基础设施。也可以执行其他诸如更新、删除等操作。 本地电脑环境为linux系统。 1、下载terraform并安装。 官网下载即可,不再赘述 验证: 阅读详情

相关推荐

IaC基础设施即代码:Terraform 连接 alicloud OSS 实现多资源管理

env\dev存放实例的配置文件,global\backend存放后端配置文件,modules存放模块文件。(5)密钥、变量、版本配置文件与global\backend相同。env\dev下创建network存放网络资源实例的配置文件。env\dev下network存放网络资源实例的配置文件。(6)修改网络资源的输出配置文件(添加安全组id的输出)env\dev下ecs存放云主机资源实例的配置文件。(2)修改主配置文件(安全组附加到VPC)(1)修改modules的ecs主配置文件。

cronaldo91的博客 2072

Terraform 学习总结(6)—— 基于阿里云平台上的 Terraform 实战

Terraform(https://www.terraform.io/)是 HashiCorp 旗下的一款开源(Go 语言开发)的 DevOps 基础架构资源管理运维工具,可以看下对应的 DevOps 工具链:Terraform 可以安全高效的构建、更改和合并多个云厂商的各种服务资源,当前支持有阿里云、AWS、微软 Azure、Vmware、Google Cloud Platform 等多个云厂商云产品的资源创建。Terraform 通过模板配置文件定义所有资源类型(有如主机,OS,存储类型,中间件,网络

科技D人生 6948

Terraform新手必看:从零开始搭建你的第一个云资源(含阿里云实战配置)

本文为Terraform新手提供了从零开始的实战指南,详细介绍了Terraform命令行工具的安装、配置及核心概念。通过阿里云实战示例,手把手教你编写首个Terraform配置,完成VPC、安全组和ECS实例等云资源的自动化创建,帮助你快速掌握基础设施即代码(IaC)的核心技能。

moss5的博客 836

Terraform-阿里云- ECS实验

选择适合你的安装即可。无特殊要求。

博然的宝藏库 1347

Terraform一键部署ECS实例

Terraform的命令行接口(CLI)提供一种简单机制,用于将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。Terraform是一个高度可扩展的工具,通过 Provider 来支持新的基础架构。您可以使用Terraform来创建、修改、删除ECS、VPC、RDS、SLB等多种资源。的免费产品,预装了Terraform的组件,并配置好身份凭证(credentials)。命令运行后将显示可用的Terraform选项的列表,如下所示,表示安装完成。创建环境变量,用于存放身份认证。

关注我!带你一路 "狂飙" 到底! 2191

新手DIY无人机,从电机到飞控,这份配件清单和避坑指南请收好

本文为无人机DIY新手提供从电机到飞控的完整配件清单和避坑指南。详细解析电机KV值选择、电调匹配、飞控系统调试等核心问题,帮助初学者避开常见雷区,顺利完成首飞。特别推荐FPV竞速机和航拍机的配件组合方案,并附赠实用调试命令和故障排查表。

weixin_27032989的博客 236

【Terraform】Terraform自动创建云服务器脚本

terraform教程,及自动生成服务器的脚本

qq_42938493的博客 1166

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

a_zxswer的博客 1689

Terraform基础 配置阿里云Provider

既然要操作阿里云,那么就需要使用阿里云的provider其实和阿里云这块在调用API,其实就是terraform里面的一个插件,tf里面是通过provider来管理这些基础设施的,所以terraform其实也是通过各个云供应商它的api来进行交互的。每个provider里面都包含了很多的资源,资源就是阿里云上面看到的云产品,如api-gateway,还有ecs,dns,等等这些产品可以理解为是资源。所以provider里面都包含了阿里云里面所有的资源。

小楼一夜听春雨,深巷明朝卖杏花 2644

Win10+pycharm+conda 配置Siammask 过程记录(新手向)

我们跑动demo 需要配置两个相关的文件这两个文件需要用 git 进行下载,对于不熟悉git的小伙伴 我这里给出连接,大家可以直接下载即可,并将其配置在 experiments文件夹下然后大家再需要在设置参数参数这里给出了。

C1137577723的博客 550

PCIe Electrical PHY(4)-PCIE SPEC第8章指标讲解

1.1 PCIE TX SPEC TX主要关心两类参数,一类是Voltage Parameters,一类是Jitter Parameters。 其中Voltage相关参数主要关心不同preset下差分电压幅度的准确性。以及共模电压的稳定性。 PCIE spec中对Jitter相关的参数测量定义如下: 分为两大类:DDJ(Data dependent Jitter)和UJ(Uncorrelated ...

maxwell2ic的博客 5951

terraform创建阿里云资源

terraform作为terraform的配置文件夹,内部的每一个.tf,.tfvars文件都会被加载。

sre救赎之路 2429

一文讲透什么是ADC/DAC中的DDC、DUC、采样率以及数据率等概念

摘要:ADC/DAC中的采样率与数据率概念不同,采样率是转换器的时钟速率,而数据率是数字输出的实际速率。抽取通过滤波降低数据速率,提升信噪比但牺牲带宽;内插则通过插零和滤波提高采样率,将镜像信号移远但增加延迟和功耗。JESD204B标准的高速转换器需平衡通道数与串行速率,内插/抽取技术是关键。文章还解析了DDC、DUC的应用及优缺点,为高速数据转换设计提供参考。(150字)

weixin_49761275的博客 4264

阿里云国际站代理商:阿里云如何通过Terraform实现资源自动化管理?

使用HCL(HashiCorp Configuration Language)编写配置文件,定义需要管理的阿里云资源,例如ECS实例、VPC、安全组等。示例配置文件:

linglideman的博客 1379

Cursor AI编程工具保姆级安装指南:从下载到中文界面设置(含免费额度说明)

本文提供Cursor AI编程工具的保姆级安装与设置教程。详细指导从官网下载、安装到中文界面切换的每一步,并重点说明其每月500次高级模型调用的免费额度策略。通过个性化设置与核心插件推荐,帮助开发者快速上手,提升AI辅助编程效率。

weixin_29191761的博客 671

Codesys.运动控制修改凸轮点

通过改凸轮曲线的主从轴缩放比例或者偏置。 新建多个凸轮曲线,对CAM曲线进行切换。 程序中动态修改,仅修改中间的关键点(凸轮末点修改or凸轮曲线运行中修改)。 程序中动态修改,修改首未关键点及关键点个数,需要重新触发MC_TableSelect。 使用程序新建凸轮表代码,实现电子凸轮基本运动。 我们讲的凸轮表切换、关键点修改、程序新建电子凸轮,这些方法没有本质区别,总之都是“趁曲线不注意,把凸轮表改了。

傻响雨 6827

Terraform 基础 定义阿里云资源 VPC、安全组

其实你对照控制台上面的字段,就可以看到非常简单,都代码化了。上面全部就是定义阿里云的资源。

小楼一夜听春雨,深巷明朝卖杏花 2940

嵌入式开发工程师笔试面试指南-Linux驱动

linux驱动

weixin_43491077的博客 473

阿里云Terraform实践

阿里云Terraform实践Terraform环境准备与安装Golang环境准备下载Golang安装包清除旧的版本安装GolangTerraform安装Alibaba Terraform Provider Terraform环境准备与安装 Golang环境准备 下载Golang安装包 https://golang.org/dl/ 清除旧的版本 brew info go brew uninstall...

flyweight_visitor的博客 1019

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

DevOps - (1)Terraform+阿里云实现云资源的CI/CD

一:简述 一直想写一个自己关于Terraform理解的皮毛,今天终于抽时间完成了,本文我将介绍Terraform是什么?以及如何通过Terraform在阿里云上创建硬件资源的过程。 众所周知,当企业想把企业本地内部系统对应 的完整的硬件架构资源迁移到云上时,云基础设施架构师就要根据原来系统项目搭建出一个对应的云端基础设施资源的架构,然后云运维工程师再根据设计好基础设施的架构图来创建云上资源,但是传统通过注册登录云平台,在通过一个个资源购买和配置的方式时间和容错成本太高,...

xcswswswws的博客 1250

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IaC基础设施即代码:Terraform 创建 docker 网络与容器资源

main.tf, Docker Provider用于与 Docker 容器和镜像进行交互,它使用 Docker API 来管理 Docker 容器的生命周期。main.tf, Docker Provider用于与 Docker 容器和镜像进行交互,它使用 Docker API 来管理 Docker 容器的生命周期。(2)Terraform模板(docker)(11)查看docker网络。(11)查看docker进程。(8)查看docker网络。(8)查看docker网络。(1)安装Docker。

cronaldo91的博客 1337

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用Terraform管理阿里云基础设施

Terraform:HashiCorp 的基础设施即代码(IaC)工具,使用声明式配置管理云资源。Provider:与云厂商交互的插件(本文使用 aliyun/alicloud)。State(状态):Terraform 用来追踪资源与其元数据的文件,可放本地或远端(remote state)。Backend:定义 state 存放位置(本文使用 OSS backend)。使用 OSS 作为远端 state 后端以便团队共享与版本化;

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 1239

terraform import-导入已有资源到Terraform

导入非Terraform申请的resource到Terraform纳管

qq522044637的博客 4294

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用

从1.212版本开始,部分关键地段被移除,推荐使用alicloud_cs_kubernetes_node_pool 管理工作节点。工作负载(无状态deployment)新增1个jenkins。(1)查看alicloud provider 示例。VPC已新增1个 (cn-hangzhou)交换机已新增1个 (cn-hangzhou)(7) 登录阿里云系统查看ACK集群。(11)登录阿里云系统查看VPC。(4)登录阿里云系统查看集群。阿里云系统查看连接集群信息。(14)登录阿里云系统查看。

cronaldo91的博客 1659

Terraform 基础 申请阿里云资源

stat文件是状态文件,第一次tf创建了资源,会将当前的状态记录下来,第二次再定义的时候会去拿这个状态和我的期望状态做对比,有哪些差异,然后去变更这些差异。申请这些资源就需要使用terraform的命令行了,开始初始化后端,后端是有存储文件的,默认情况下是在本地存储的,然后会多一些文件。上面都是交互需要输入yes,如果你确定没有问题了,那么加上自动的选项,-auto-approve,就不会输出信息了,就直接申请就行了。可以看到VPC ID,网段信息,region信息,用户网段,创建时间,状态。

小楼一夜听春雨,深巷明朝卖杏花 4344

Terraform 实践

Terraform 介绍 什么是 Terraform Terraform是一种开源工具,用于安全高效地预览,配置和管理云基础架构和资源。 概览 HashiCorp Terraform 是一个IT基础架构自动化编排工具,可以用代码来管理维护 IT 资源。Terraform的命令行接口(CLI)提供一种简单机制,用于将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。它编写了描述云资源拓扑的配置文件中的基础结构,例如虚拟机、存储帐户和网络接口。 Terraform是一个高度可扩展的工具,通过 Pro

qq_337694336 961
上一篇: Terraform本地windows部署
下一篇: k8s部署argocd
被一米六支配的恐惧
博客等级 码龄9年 246粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值