169 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HCL
		
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HCL
		
	
	
	
# 全局变量定义
 | 
						|
 | 
						|
# 环境配置
 | 
						|
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   = "opentofu"
 | 
						|
    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
 | 
						|
} |