@@ -2,19 +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- }
165# ECS登录密码
17- variable "password " {
6+ variable "ecs_password " {
187 type = string
198 default = " Terraform@Example"
209}
@@ -26,6 +15,26 @@ variable "host_name" {
2615 description = " your domain name"
2716}
2817
18+ # 主机记录
19+ variable "host_record" {
20+ type = string
21+ default = " image"
22+ description = " Host Record,like image"
23+ }
24+
25+ provider "alicloud" {
26+ region = var. region
27+ }
28+
29+ # 查询支持CLB的可用区
30+ data "alicloud_slb_zones" "example" {}
31+
32+ # 可用区
33+ data "alicloud_zones" "example" {
34+ available_resource_creation = " VSwitch"
35+ available_disk_category = local. available_disk_category
36+ }
37+
2938locals {
3039 available_disk_category = " cloud_essd"
3140 # ECS系统镜像
@@ -38,7 +47,8 @@ locals {
3847 backup_vsw_cidr_block = " 172.16.2.0/24"
3948 # master交换机网段
4049 master_vsw_cidr_block = " 172.16.0.0/24"
41-
50+ # 提取地区交集
51+ intersection_zones = tolist (setintersection (data. alicloud_slb_zones . example . ids , data. alicloud_zones . example . ids ))
4252 # ECS中部署服务脚本
4353 master_ecs_command = << EOS
4454 yum install -y nginx
@@ -70,15 +80,15 @@ resource "alicloud_vpc" "example" {
7080resource "alicloud_vswitch" "master_vswitch" {
7181 vpc_id = alicloud_vpc. example . id
7282 cidr_block = local. master_vsw_cidr_block
73- zone_id = data . alicloud_zones . example . zones [0 ]. id
83+ zone_id = local . intersection_zones [0 ]
7484 vswitch_name = " master_vswitch_test_${ random_integer . example . result } "
7585}
7686
7787# backup交换机
7888resource "alicloud_vswitch" "backup_vswitch" {
7989 vpc_id = alicloud_vpc. example . id
8090 cidr_block = local. backup_vsw_cidr_block
81- zone_id = data . alicloud_zones . example . zones [1 ]. id
91+ zone_id = local . intersection_zones [1 ]
8292 vswitch_name = " backup_vswitch_test_${ random_integer . example . result } "
8393}
8494
@@ -106,15 +116,15 @@ resource "alicloud_security_group_rule" "egress" {
106116 ip_protocol = " tcp" # TCP协议
107117 nic_type = " intranet" # 内网网卡类型(VPC环境)
108118 policy = " accept" # 允许策略
109- port_range = " 8 /80" # 允许80端口
119+ port_range = " 80 /80" # 允许80端口
110120 priority = 1 # 优先级设置
111121 security_group_id = alicloud_security_group. example . id # 关联的安全组ID
112122 cidr_ip = " 10.0.0.0/8" # 允许的IP地址范围,示例为10.0.0.0/8
113123}
114124
115125# mster ECS实例
116126resource "alicloud_instance" "master_example" {
117- availability_zone = data . alicloud_zones . example . zones [0 ]. id
127+ availability_zone = local . intersection_zones [0 ]
118128 security_groups = alicloud_security_group. example . * . id
119129 instance_type = local. instance_type
120130 system_disk_category = local. available_disk_category
@@ -124,12 +134,12 @@ resource "alicloud_instance" "master_example" {
124134 instance_name = " master_instance_name_${ random_integer . example . result } "
125135 vswitch_id = alicloud_vswitch. master_vswitch . id
126136 internet_max_bandwidth_out = 10
127- password = var. password
137+ password = var. ecs_password
128138}
129139
130140# backup ECS实例
131141resource "alicloud_instance" "backup_example" {
132- availability_zone = data . alicloud_zones . example . zones [1 ]. id
142+ availability_zone = local . intersection_zones [1 ]
133143 security_groups = alicloud_security_group. example . * . id
134144 instance_type = local. instance_type
135145 system_disk_category = local. available_disk_category
@@ -139,7 +149,7 @@ resource "alicloud_instance" "backup_example" {
139149 instance_name = " backup_instance_name_${ random_integer . example . result } "
140150 vswitch_id = alicloud_vswitch. backup_vswitch . id
141151 internet_max_bandwidth_out = 10
142- password = var. password
152+ password = var. ecs_password
143153}
144154
145155# master ECS命令
@@ -151,6 +161,9 @@ resource "alicloud_ecs_command" "master_ecs_command" {
151161 command_content = base64encode (local. master_ecs_command )
152162 timeout = 3600
153163 working_dir = " /root"
164+ lifecycle {
165+ ignore_changes = [command_content ]
166+ }
154167}
155168
156169# 在master ECS中执行命令
@@ -171,6 +184,9 @@ resource "alicloud_ecs_command" "backup_ecs_command" {
171184 command_content = base64encode (local. backup_ecs_command )
172185 timeout = 3600
173186 working_dir = " /root"
187+ lifecycle {
188+ ignore_changes = [command_content ]
189+ }
174190}
175191
176192# 在backup ECS中执行命令
@@ -226,6 +242,7 @@ resource "alicloud_slb_server_group_server_attachment" "backup_attachment_master
226242 description = " backup"
227243}
228244
245+ # 创建监听
229246resource "alicloud_slb_listener" "example" {
230247 description = " description_${ random_integer . example . result } "
231248 load_balancer_id = alicloud_slb_load_balancer. example . id
@@ -240,7 +257,7 @@ resource "alicloud_slb_listener" "example" {
240257resource "alicloud_dns_record" "example" {
241258 name = var. host_name
242259 type = " A"
243- host_record = " WWWW "
260+ host_record = var . host_record
244261 value = alicloud_slb_load_balancer. example . address
245262 ttl = 600
246263}
0 commit comments