# 全局变量定义 # 环境配置 variable "environment" { description = "部署环境 (dev, staging, production)" type = string validation { condition = contains(["dev", "staging", "production"], var.environment) error_message = "环境必须是 dev, staging, 或 production 之一。" } } variable "project_name" { description = "项目名称" type = string default = "mgmt" } variable "owner" { description = "资源所有者" type = string default = "ben" } # 网络配置 variable "vpc_cidr" { description = "VPC CIDR 块" type = string default = "10.0.0.0/16" } variable "availability_zones" { description = "可用区列表" type = list(string) default = ["a", "b", "c"] } # 计算资源配置 variable "instance_types" { description = "不同环境的实例类型" type = map(object({ web = string app = string db = string cache = string })) default = { dev = { web = "t3.micro" app = "t3.small" db = "t3.micro" cache = "t3.micro" } staging = { web = "t3.small" app = "t3.medium" db = "t3.small" cache = "t3.small" } production = { web = "t3.medium" app = "t3.large" db = "t3.medium" cache = "t3.medium" } } } # 标签配置 variable "common_tags" { description = "通用标签" type = map(string) default = { Project = "mgmt" ManagedBy = "terraform" Owner = "ben" } } # 云服务商特定配置 variable "cloud_providers" { description = "启用的云服务商" type = list(string) default = ["oracle", "huawei", "google", "digitalocean", "aws"] } # Oracle Cloud 配置 variable "oci_config" { description = "Oracle Cloud 配置" type = object({ tenancy_ocid = string user_ocid = string fingerprint = string private_key_path = string region = string }) default = { tenancy_ocid = "" user_ocid = "" fingerprint = "" private_key_path = "~/.oci/oci_api_key.pem" region = "ap-seoul-1" } sensitive = true } # 华为云配置 variable "huawei_config" { description = "华为云配置" type = object({ access_key = string secret_key = string region = string }) default = { access_key = "" secret_key = "" region = "cn-north-4" } sensitive = true } # Google Cloud 配置 variable "gcp_config" { description = "Google Cloud 配置" type = object({ project_id = string region = string zone = string credentials = string }) default = { project_id = "" region = "asia-northeast3" zone = "asia-northeast3-a" credentials = "" } sensitive = true } # DigitalOcean 配置 variable "do_config" { description = "DigitalOcean 配置" type = object({ token = string region = string }) default = { token = "" region = "sgp1" } sensitive = true } # AWS 配置 variable "aws_config" { description = "AWS 配置" type = object({ access_key = string secret_key = string region = string }) default = { access_key = "" secret_key = "" region = "ap-northeast-1" } sensitive = true }