Skip to content

Commit f786900

Browse files
lsy1968shanye997
authored andcommitted
201-use-case-use-alb-instance-to-provide-ipv4-services
1 parent a30e075 commit f786900

File tree

2 files changed

+47
-30
lines changed
  • quickstarts/Application_Load_Balancer(ALB)/201-use-case-use-alb-instance-to-provide-ipv4-services

2 files changed

+47
-30
lines changed

quickstarts/Application_Load_Balancer(ALB)/201-use-case-use-alb-instance-to-provide-ipv4-services/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,16 @@ No modules.
4343
| [alicloud_vswitch.backup_vswitch](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
4444
| [alicloud_vswitch.master_vswitch](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
4545
| [random_integer.example](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/integer) | resource |
46+
| [alicloud_alb_zones.example](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/alb_zones) | data source |
4647
| [alicloud_zones.example](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/zones) | data source |
4748

4849
## Inputs
4950

5051
| Name | Description | Type | Default | Required |
5152
|------|-------------|------|---------|:--------:|
53+
| <a name="input_ecs_password"></a> [ecs\_password](#input\_ecs\_password) | ECS登录密码 | `string` | `"Terraform@Example"` | no |
5254
| <a name="input_host_name"></a> [host\_name](#input\_host\_name) | your domain name | `string` | `"tf-example.com"` | no |
53-
| <a name="input_password"></a> [password](#input\_password) | ECS登录密码 | `string` | `"Terraform@Example"` | no |
55+
| <a name="input_host_record"></a> [host\_record](#input\_host\_record) | Host Record,like image | `string` | `"image"` | no |
5456
| <a name="input_region"></a> [region](#input\_region) | n/a | `string` | `"cn-beijing"` | no |
5557
<!-- END_TF_DOCS -->
5658

quickstarts/Application_Load_Balancer(ALB)/201-use-case-use-alb-instance-to-provide-ipv4-services/main.tf

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,8 @@ variable "region" {
22
default = "cn-beijing"
33
}
44

5-
provider "alicloud" {
6-
region = var.region
7-
}
8-
9-
# 可用区
10-
data "alicloud_zones" "example" {
11-
available_resource_creation = "VSwitch"
12-
available_disk_category = local.available_disk_category
13-
available_slb_address_ip_version = "ipv4"
14-
available_slb_address_type = "classic_internet"
15-
}
16-
175
# ECS登录密码
18-
variable "password" {
6+
variable "ecs_password" {
197
type = string
208
default = "Terraform@Example"
219
}
@@ -27,14 +15,35 @@ variable "host_name" {
2715
description = "your domain name"
2816
}
2917

30-
locals {
31-
vpc_cidr_block = "172.16.0.0/16"
32-
available_disk_category = "cloud_essd"
33-
image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
34-
instance_type = "ecs.e-c1m1.large"
35-
master_vsw_cidr_block = "172.16.0.0/24"
36-
backup_vsw_cidr_block = "172.16.2.0/24"
18+
# 主机记录
19+
variable "host_record" {
20+
type = string
21+
default = "image"
22+
description = "Host Record,like image"
23+
}
3724

25+
provider "alicloud" {
26+
region = var.region
27+
}
28+
29+
# 查询支持ALB的可用区
30+
data "alicloud_alb_zones" "example" {}
31+
32+
# 查询支持ECS云盘类型的可用区
33+
data "alicloud_zones" "example" {
34+
available_resource_creation = "VSwitch" // 交换机类型
35+
available_disk_category = local.available_disk_category // 云盘类型
36+
}
37+
38+
locals {
39+
vpc_cidr_block = "172.16.0.0/16" # 专有网络VPC的CIDR
40+
available_disk_category = "cloud_essd" # 云盘类型
41+
image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd" # 镜像ID
42+
ecs_instance_type = "ecs.e-c1m1.large" # ECS实例规格
43+
master_vsw_cidr_block = "172.16.0.0/24" # master交换机的CIDR
44+
backup_vsw_cidr_block = "172.16.2.0/24" # backup交换机的CIDR
45+
# 提取地区交集
46+
intersection_zones = tolist(setintersection(data.alicloud_alb_zones.example.ids, data.alicloud_zones.example.ids))
3847
# ECS中部署服务脚本
3948
master_ecs_command = <<EOS
4049
yum install -y nginx
@@ -66,15 +75,15 @@ resource "alicloud_vpc" "example" {
6675
resource "alicloud_vswitch" "master_vswitch" {
6776
vpc_id = alicloud_vpc.example.id
6877
cidr_block = local.master_vsw_cidr_block
69-
zone_id = data.alicloud_zones.example.zones[0].id
78+
zone_id = local.intersection_zones[0]
7079
vswitch_name = "master_vswitch_test_${random_integer.example.result}"
7180
}
7281

7382
# backup交换机
7483
resource "alicloud_vswitch" "backup_vswitch" {
7584
vpc_id = alicloud_vpc.example.id
7685
cidr_block = local.backup_vsw_cidr_block
77-
zone_id = data.alicloud_zones.example.zones[1].id
86+
zone_id = local.intersection_zones[1]
7887
vswitch_name = "backup_vswitch_test_${random_integer.example.result}"
7988
}
8089

@@ -110,32 +119,32 @@ resource "alicloud_security_group_rule" "egress" {
110119

111120
# mster ECS实例
112121
resource "alicloud_instance" "master_example" {
113-
availability_zone = data.alicloud_zones.example.zones[0].id
122+
availability_zone = local.intersection_zones[0]
114123
security_groups = alicloud_security_group.example.*.id
115-
instance_type = local.instance_type
124+
instance_type = local.ecs_instance_type
116125
system_disk_category = local.available_disk_category
117126
system_disk_name = "master_system_disk_name_${random_integer.example.result}"
118127
system_disk_description = "master_system_disk_description_${random_integer.example.result}"
119128
image_id = local.image_id
120129
instance_name = "master_instance_name_${random_integer.example.result}"
121130
vswitch_id = alicloud_vswitch.master_vswitch.id
122131
internet_max_bandwidth_out = 10
123-
password = var.password
132+
password = var.ecs_password
124133
}
125134

126135
# backup ECS实例
127136
resource "alicloud_instance" "backup_example" {
128-
availability_zone = data.alicloud_zones.example.zones[1].id
137+
availability_zone = local.intersection_zones[1]
129138
security_groups = alicloud_security_group.example.*.id
130-
instance_type = local.instance_type
139+
instance_type = local.ecs_instance_type
131140
system_disk_category = local.available_disk_category
132141
system_disk_name = "backup_system_disk_name_${random_integer.example.result}"
133142
system_disk_description = "backup_system_disk_description_${random_integer.example.result}"
134143
image_id = local.image_id
135144
instance_name = "backup_instance_name_${random_integer.example.result}"
136145
vswitch_id = alicloud_vswitch.backup_vswitch.id
137146
internet_max_bandwidth_out = 10
138-
password = var.password
147+
password = var.ecs_password
139148
}
140149

141150
# master ECS命令
@@ -147,6 +156,9 @@ resource "alicloud_ecs_command" "master_ecs_command" {
147156
command_content = base64encode(local.master_ecs_command)
148157
timeout = 3600
149158
working_dir = "/root"
159+
lifecycle {
160+
ignore_changes = [command_content]
161+
}
150162
}
151163

152164
# 在master ECS中执行命令
@@ -167,6 +179,9 @@ resource "alicloud_ecs_command" "backup_ecs_command" {
167179
command_content = base64encode(local.backup_ecs_command)
168180
timeout = 3600
169181
working_dir = "/root"
182+
lifecycle {
183+
ignore_changes = [command_content]
184+
}
170185
}
171186

172187
# 在backup ECS中执行命令
@@ -260,7 +275,7 @@ resource "alicloud_alb_listener" "example" {
260275
resource "alicloud_dns_record" "example" {
261276
name = var.host_name
262277
type = "CNAME"
263-
host_record = "@"
278+
host_record = var.host_record
264279
value = alicloud_alb_load_balancer.example.dns_name
265280
ttl = 600
266281
}

0 commit comments

Comments
 (0)