mgmt/cloud_provider/terraform-alicloud-beijing/main.tf

120 lines
3.3 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 阿里云北京区域主配置文件
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 = "网络资源使用情况"
}