# Runpod API Configuration variable "runpod_api_key" { description = "Runpod API key for authentication" type = string sensitive = true } # Pod Configuration variable "pod_name" { description = "Name of the Runpod pod" type = string default = "foxhunt-trading-pod" } variable "docker_image" { description = "Docker image to deploy (PRIVATE: jgrusewski/foxhunt)" type = string default = "jgrusewski/foxhunt:latest" } variable "gpu_type" { description = "GPU type ID (NVIDIA Tesla V100 = NVIDIA Tesla V100, RTX 4090 = NVIDIA GeForce RTX 4090)" type = string default = "NVIDIA Tesla V100" } variable "gpu_count" { description = "Number of GPUs to allocate" type = number default = 1 validation { condition = var.gpu_count >= 1 && var.gpu_count <= 8 error_message = "GPU count must be between 1 and 8" } } variable "cloud_type" { description = "Cloud type (SECURE = on-demand, COMMUNITY = spot)" type = string default = "SECURE" validation { condition = contains(["SECURE", "COMMUNITY"], var.cloud_type) error_message = "Cloud type must be SECURE or COMMUNITY" } } variable "data_center_id" { description = "Data center ID (e.g., US-CA-1, EU-RO-1)" type = string default = "US-CA-1" } variable "country_code" { description = "Country code for deployment (e.g., US, CA, EU)" type = string default = "US" } variable "container_disk_size_gb" { description = "Container disk size in GB" type = number default = 50 } # Network Volume Configuration variable "volume_name" { description = "Name of the persistent network volume" type = string default = "foxhunt-data-volume" } variable "volume_size_gb" { description = "Size of the network volume in GB" type = number default = 100 validation { condition = var.volume_size_gb >= 10 error_message = "Volume size must be at least 10 GB" } } # Database Configuration variable "postgres_db" { description = "PostgreSQL database name" type = string default = "foxhunt" } variable "postgres_user" { description = "PostgreSQL username" type = string default = "foxhunt" } variable "postgres_password" { description = "PostgreSQL password (DEPRECATED: Store in /runpod-volume/.env instead)" type = string sensitive = true default = "" } # Vault Configuration variable "vault_token" { description = "Vault root token for secrets management (DEPRECATED: Store in /runpod-volume/.env instead)" type = string sensitive = true default = "" } # External API Keys variable "databento_api_key" { description = "Databento API key for market data (DEPRECATED: Store in /runpod-volume/.env instead)" type = string sensitive = true default = "" } variable "jwt_secret" { description = "JWT secret for authentication (DEPRECATED: Store in /runpod-volume/.env instead)" type = string sensitive = true default = "" } # Application Configuration variable "rust_log_level" { description = "Rust logging level (trace, debug, info, warn, error)" type = string default = "info" validation { condition = contains(["trace", "debug", "info", "warn", "error"], var.rust_log_level) error_message = "Invalid log level" } } variable "deployment_env" { description = "Deployment environment (development, staging, production)" type = string default = "production" validation { condition = contains(["development", "staging", "production"], var.deployment_env) error_message = "Invalid deployment environment" } } variable "start_script" { description = "Custom start script for the pod (leave empty for default)" type = string default = "" } # Networking Configuration variable "enable_public_ip" { description = "Enable public IP for SSH access" type = bool default = true } # Endpoint Configuration (optional) variable "enable_endpoint" { description = "Create a serverless endpoint for the pod" type = bool default = false } variable "template_id" { description = "Runpod template ID (leave empty for custom image)" type = string default = "" } variable "max_workers" { description = "Maximum number of endpoint workers" type = number default = 3 } variable "idle_timeout_seconds" { description = "Idle timeout for endpoint workers (seconds)" type = number default = 300 } variable "execution_timeout_seconds" { description = "Execution timeout for endpoint requests (seconds)" type = number default = 600 } # SSH Configuration variable "ssh_public_key" { description = "SSH public key for pod access" type = string default = "" } # Tags and Metadata variable "tags" { description = "Tags to apply to resources" type = map(string) default = { project = "foxhunt" environment = "production" managed_by = "terraform" } }