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