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
 | |
| } |