variable "location" {
description = "Azure region for resources"
type = string
default = "East US"
}
variable "openai_location" {
description = "Azure region for OpenAI service (limited availability)"
type = string
default = "East US"
}
variable "image_tag" {
description = "Docker image tag to deploy"
type = string
default = "latest"
}
variable "deployment_slot" {
description = "Deployment slot for blue-green deployment"
type = string
default = "blue"
validation {
condition = contains(["blue", "green"], var.deployment_slot)
error_message = "Deployment slot must be either 'blue' or 'green'."
}
}
variable "switch_traffic" {
description = "Whether to switch traffic to the new deployment"
type = bool
default = false
}
variable "allowed_ip_ranges" {
description = "List of IP ranges allowed to access resources"
type = list(string)
default = ["0.0.0.0/0"] # Restrict this in production
}
variable "alert_email" {
description = "Email address for alerts"
type = string
default = "admin@pxlabs.com"
}
variable "slack_webhook_url" {
description = "Slack webhook URL for notifications"
type = string
default = ""
sensitive = true
}
variable "min_replicas" {
description = "Minimum number of container replicas"
type = number
default = 2
}
variable "max_replicas" {
description = "Maximum number of container replicas"
type = number
default = 10
}
variable "cpu_cores" {
description = "CPU cores per container"
type = number
default = 1.0
}
variable "memory_gb" {
description = "Memory in GB per container"
type = string
default = "2Gi"
}
variable "log_retention_days" {
description = "Log retention period in days"
type = number
default = 90
}
variable "backup_retention_days" {
description = "Backup retention period in days"
type = number
default = 30
}
variable "enable_chaos_studio" {
description = "Enable Azure Chaos Studio for chaos engineering"
type = bool
default = true
}
variable "enable_monitoring" {
description = "Enable comprehensive monitoring and alerting"
type = bool
default = true
}
variable "enable_security_center" {
description = "Enable Azure Security Center"
type = bool
default = true
}
variable "cost_center" {
description = "Cost center for resource tagging"
type = string
default = "Engineering"
}
variable "owner" {
description = "Owner for resource tagging"
type = string
default = "pXLabs"
}
variable "environment_tier" {
description = "Environment tier (production, staging, development)"
type = string
default = "production"
}
variable "compliance_requirements" {
description = "List of compliance requirements (SOC2, HIPAA, etc.)"
type = list(string)
default = ["SOC2"]
}
variable "data_residency_region" {
description = "Data residency region for compliance"
type = string
default = "US"
}
variable "encryption_key_rotation_days" {
description = "Key rotation period in days"
type = number
default = 90
}
variable "network_security_rules" {
description = "Custom network security rules"
type = list(object({
name = string
priority = number
direction = string
access = string
protocol = string
source_port_range = string
destination_port_range = string
source_address_prefix = string
destination_address_prefix = string
}))
default = []
}
variable "custom_domains" {
description = "Custom domains for the application"
type = list(string)
default = []
}
variable "ssl_certificate_source" {
description = "SSL certificate source (managed, keyvault, custom)"
type = string
default = "managed"
}
variable "auto_scaling_rules" {
description = "Auto-scaling configuration"
type = object({
cpu_threshold = number
memory_threshold = number
request_threshold = number
scale_out_cooldown = string
scale_in_cooldown = string
})
default = {
cpu_threshold = 70
memory_threshold = 80
request_threshold = 100
scale_out_cooldown = "PT2M"
scale_in_cooldown = "PT5M"
}
}
variable "disaster_recovery" {
description = "Disaster recovery configuration"
type = object({
enabled = bool
backup_region = string
rpo_hours = number
rto_hours = number
cross_region_backup = bool
})
default = {
enabled = true
backup_region = "West US 2"
rpo_hours = 4
rto_hours = 1
cross_region_backup = true
}
}
variable "performance_tiers" {
description = "Performance tier configuration"
type = object({
storage_tier = string
compute_tier = string
database_tier = string
cache_tier = string
})
default = {
storage_tier = "Premium"
compute_tier = "Standard"
database_tier = "GeneralPurpose"
cache_tier = "Premium"
}
}
variable "feature_flags" {
description = "Feature flags for conditional resource deployment"
type = object({
enable_advanced_security = bool
enable_cost_optimization = bool
enable_performance_insights = bool
enable_compliance_monitoring = bool
})
default = {
enable_advanced_security = true
enable_cost_optimization = true
enable_performance_insights = true
enable_compliance_monitoring = true
}
}