# Variables for Multi-Cloud Deployment variable "environment" { description = "Environment name (prod, dev, test, staging)" type = string default = "prod" validation { condition = contains(["prod", "dev", "test", "staging"], var.environment) error_message = "Environment must be one of: prod, dev, test, staging" } } variable "deployment_strategy" { description = "Deployment strategy (blue-green, canary, rolling)" type = string default = "blue-green" validation { condition = contains(["blue-green", "canary", "rolling"], var.deployment_strategy) error_message = "Deployment strategy must be one of: blue-green, canary, rolling" } } variable "enable_azure_arc" { description = "Enable Azure Arc for hybrid management" type = bool default = true } variable "enable_service_mesh" { description = "Enable service mesh for cross-cloud communication" type = bool default = true } variable "service_mesh_provider" { description = "Service mesh provider (istio, linkerd, kuma)" type = string default = "istio" validation { condition = contains(["istio", "linkerd", "kuma"], var.service_mesh_provider) error_message = "Service mesh provider must be one of: istio, linkerd, kuma" } } variable "secrets_provider" { description = "Primary secrets management provider" type = string default = "vault" validation { condition = contains(["vault", "azure-keyvault", "aws-secrets-manager", "gcp-secret-manager"], var.secrets_provider) error_message = "Secrets provider must be one of: vault, azure-keyvault, aws-secrets-manager, gcp-secret-manager" } } variable "vault_address" { description = "HashiCorp Vault address (if using Vault)" type = string default = "" } variable "vault_token" { description = "HashiCorp Vault token (if using Vault)" type = string default = "" sensitive = true } # Azure-specific variables variable "azure_subscription_id" { description = "Azure subscription ID" type = string default = "" } variable "azure_tenant_id" { description = "Azure tenant ID" type = string default = "" } # AWS-specific variables variable "aws_access_key_id" { description = "AWS access key ID" type = string default = "" sensitive = true } variable "aws_secret_access_key" { description = "AWS secret access key" type = string default = "" sensitive = true } variable "aws_default_region" { description = "AWS default region" type = string default = "us-west-2" } # GCP-specific variables variable "gcp_project_id" { description = "GCP project ID" type = string default = "" } variable "gcp_default_region" { description = "GCP default region" type = string default = "europe-west1" } # IBM Cloud-specific variables variable "ibm_api_key" { description = "IBM Cloud API key" type = string default = "" sensitive = true } variable "ibm_default_region" { description = "IBM Cloud default region" type = string default = "us-south" } # Oracle Cloud-specific variables variable "oci_tenancy_ocid" { description = "OCI tenancy OCID" type = string default = "" } variable "oci_user_ocid" { description = "OCI user OCID" type = string default = "" } variable "oci_fingerprint" { description = "OCI API key fingerprint" type = string default = "" } variable "oci_private_key_path" { description = "Path to OCI private key" type = string default = "" } variable "oci_default_region" { description = "OCI default region" type = string default = "us-ashburn-1" } # vSphere/On-prem variables variable "vsphere_user" { description = "vSphere username" type = string default = "" } variable "vsphere_password" { description = "vSphere password" type = string default = "" sensitive = true } variable "vsphere_server" { description = "vSphere server address" type = string default = "" } variable "tags" { description = "Common tags to apply to all resources" type = map(string) default = { Environment = "production" Project = "DeFi Oracle Meta Mainnet" ChainID = "138" ManagedBy = "Terraform" CostCenter = "Blockchain" Owner = "DevOps Team" } }