120 lines
3.3 KiB
HCL
120 lines
3.3 KiB
HCL
# 阿里云北京区域主配置文件
|
||
|
||
terraform {
|
||
required_providers {
|
||
alicloud = {
|
||
source = "aliyun/alicloud"
|
||
version = "1.260.1"
|
||
}
|
||
}
|
||
}
|
||
|
||
provider "alicloud" {
|
||
access_key = var.access_key
|
||
secret_key = var.secret_key
|
||
region = var.region
|
||
}
|
||
|
||
# 创建北京可用区I的交换机
|
||
resource "alicloud_vswitch" "bj_i" {
|
||
vpc_id = var.vpc_id
|
||
cidr_block = "10.0.1.0/24" # 使用不同的网段
|
||
zone_id = "cn-beijing-i" # 北京可用区I
|
||
vswitch_name = "${var.project_name}-${var.environment}-bj-i-supabase"
|
||
|
||
tags = merge(var.common_tags, {
|
||
Name = "${var.project_name}-${var.environment}-bj-i-supabase"
|
||
Purpose = "Supabase deployment"
|
||
})
|
||
}
|
||
|
||
# 获取所有 RDS 实例(包括所有状态)
|
||
data "alicloud_db_instances" "all" {
|
||
# 不限制状态,获取所有实例
|
||
}
|
||
|
||
# 注意:alicloud_db_instance 是资源类型,不是数据源
|
||
# 我们只使用 alicloud_db_instances 数据源来获取实例列表
|
||
|
||
# 检查 VPC 和交换机使用情况
|
||
data "alicloud_vpcs" "all" {}
|
||
|
||
data "alicloud_vswitches" "all" {}
|
||
|
||
# 输出新创建的交换机信息
|
||
output "new_vswitch_id" {
|
||
value = alicloud_vswitch.bj_i.id
|
||
description = "新创建的北京可用区I交换机ID"
|
||
}
|
||
|
||
output "new_vswitch_name" {
|
||
value = alicloud_vswitch.bj_i.vswitch_name
|
||
description = "新创建的北京可用区I交换机名称"
|
||
}
|
||
|
||
# 输出所有数据库实例状态
|
||
output "db_instances_status" {
|
||
value = {
|
||
for instance in data.alicloud_db_instances.all.instances : instance.id => {
|
||
name = instance.db_instance_description
|
||
status = instance.db_instance_status
|
||
engine = instance.engine
|
||
engine_version = instance.engine_version
|
||
create_time = instance.create_time
|
||
expire_time = instance.expire_time
|
||
vpc_id = instance.vpc_id
|
||
vswitch_id = instance.vswitch_id
|
||
}
|
||
}
|
||
description = "所有数据库实例状态"
|
||
}
|
||
|
||
# 检查是否有正在创建的实例
|
||
output "creating_instances" {
|
||
value = [
|
||
for instance in data.alicloud_db_instances.all.instances : {
|
||
id = instance.id
|
||
name = instance.db_instance_description
|
||
status = instance.db_instance_status
|
||
create_time = instance.create_time
|
||
} if contains(["Creating", "DBInstanceClassChanging", "Transing", "Pending"], instance.db_instance_status)
|
||
]
|
||
description = "正在创建的数据库实例"
|
||
}
|
||
|
||
# 输出所有实例状态(用于调试)
|
||
output "all_instances_debug" {
|
||
value = [
|
||
for instance in data.alicloud_db_instances.all.instances : {
|
||
id = instance.id
|
||
name = instance.db_instance_description
|
||
status = instance.db_instance_status
|
||
create_time = instance.create_time
|
||
engine = instance.engine
|
||
}
|
||
]
|
||
description = "所有数据库实例状态(调试用)"
|
||
}
|
||
|
||
# 输出网络使用情况
|
||
output "network_usage" {
|
||
value = {
|
||
vpcs = {
|
||
for vpc in data.alicloud_vpcs.all.vpcs : vpc.id => {
|
||
name = vpc.vpc_name
|
||
cidr = vpc.cidr_block
|
||
status = vpc.status
|
||
}
|
||
}
|
||
vswitches = {
|
||
for vswitch in data.alicloud_vswitches.all.vswitches : vswitch.id => {
|
||
name = vswitch.vswitch_name
|
||
vpc_id = vswitch.vpc_id
|
||
zone_id = vswitch.zone_id
|
||
status = vswitch.status
|
||
}
|
||
}
|
||
}
|
||
description = "网络资源使用情况"
|
||
}
|