1
+ # 定义一个变量region,默认值为"cn-beijing",用于指定阿里云区域
2
+ variable "region" {
3
+ default = " cn-beijing"
4
+ }
5
+
6
+ # 配置阿里云provider,使用变量region中定义的区域
7
+ provider "alicloud" {
8
+ region = var. region
9
+ }
10
+
11
+ # 定义一个字符串类型的变量instance_type,默认值为"ecs.e-c1m1.large",用于指定ECS实例类型
12
+ variable "instance_type" {
13
+ type = string
14
+ default = " ecs.e-c1m1.large"
15
+ }
16
+
17
+ # 使用数据源查询可用区信息,通过指定的实例类型、资源创建类型(如VSwitch)以及磁盘种类来过滤结果
18
+ data "alicloud_zones" "default" {
19
+ available_instance_type = var. instance_type
20
+ available_resource_creation = " VSwitch"
21
+ available_disk_category = " cloud_essd"
22
+ }
23
+
24
+ # 定义一个变量vpc_cidr_block,默认值为"172.16.0.0/16",用于指定VPC的CIDR块
25
+ variable "vpc_cidr_block" {
26
+ default = " 172.16.0.0/16"
27
+ }
28
+
29
+ # 定义一个变量vsw_cidr_block,默认值为"172.16.0.0/24",用于指定VSwitch的CIDR块
30
+ variable "vsw_cidr_block" {
31
+ default = " 172.16.0.0/24"
32
+ }
33
+
34
+ # 生成一个介于10000到99999之间的随机整数,用于确保某些资源名称的唯一性
35
+ resource "random_integer" "default" {
36
+ min = 10000
37
+ max = 99999
38
+ }
39
+
40
+ # 创建名为vpc-test的VPC,并使用随机整数确保名称唯一性
41
+ resource "alicloud_vpc" "vpc" {
42
+ vpc_name = " vpc-test_${ random_integer . default . result } "
43
+ cidr_block = var. vpc_cidr_block
44
+ }
45
+
46
+ # 创建安全组,名称包含随机整数以保证唯一性,并关联至上述VPC
47
+ resource "alicloud_security_group" "group" {
48
+ security_group_name = " test_${ random_integer . default . result } " # 替换了这里的字段名
49
+ vpc_id = alicloud_vpc. vpc . id
50
+ }
51
+
52
+ # 创建一条允许所有TCP流量进入的安全组规则,与之前创建的安全组关联
53
+ resource "alicloud_security_group_rule" "allow_all_tcp" {
54
+ type = " ingress"
55
+ ip_protocol = " tcp"
56
+ nic_type = " intranet" # 修改了这里,将nic_type改为'intranet'
57
+ policy = " accept"
58
+ port_range = " 1/65535"
59
+ priority = 1
60
+ security_group_id = alicloud_security_group. group . id
61
+ cidr_ip = " 0.0.0.0/0"
62
+ }
63
+
64
+ # 创建VSwitch,名称中包含随机整数以确保唯一性,并与VPC、可用区关联
65
+ resource "alicloud_vswitch" "vswitch" {
66
+ vpc_id = alicloud_vpc. vpc . id
67
+ cidr_block = var. vsw_cidr_block
68
+ zone_id = data. alicloud_zones . default . zones [0 ]. id
69
+ vswitch_name = " vswitch-test-${ random_integer . default . result } "
70
+ }
71
+
72
+ # 创建ECS实例,设置多个参数如可用区、安全组、实例类型等,并使用随机整数保证实例名称的唯一性
73
+ resource "alicloud_instance" "instance" {
74
+ availability_zone = data. alicloud_zones . default . zones [0 ]. id
75
+ security_groups = [alicloud_security_group . group . id ]
76
+ instance_type = var. instance_type
77
+ system_disk_category = " cloud_essd"
78
+ system_disk_name = " test_foo_system_disk_${ random_integer . default . result } "
79
+ system_disk_description = " test_foo_system_disk_description"
80
+ image_id = " aliyun_2_1903_x64_20G_alibase_20240628.vhd"
81
+ instance_name = " test_ecs_${ random_integer . default . result } "
82
+ vswitch_id = alicloud_vswitch. vswitch . id
83
+ internet_max_bandwidth_out = 10
84
+ password = " Terraform@Example" # 用户根据自己实际情况修改
85
+ }
0 commit comments