################################################################################ # Module: agentidp # Variables # # Accepts all configuration for deploying the AgentIdP container to either # AWS ECS Fargate (provider = "aws") or GCP Cloud Run (provider = "gcp"). ################################################################################ variable "provider_type" { description = "Cloud provider target: 'aws' or 'gcp'." type = string validation { condition = contains(["aws", "gcp"], var.provider_type) error_message = "provider_type must be either 'aws' or 'gcp'." } } variable "environment" { description = "Deployment environment label (e.g. production, staging)." type = string } variable "project" { description = "Project identifier used in resource tags and names." type = string default = "sentryagent-agentidp" } variable "app_image" { description = "Fully-qualified container image reference including registry host and tag." type = string # Example: "sentryagent/agentidp:1.2.3" } variable "app_port" { description = "Port the AgentIdP container listens on. Must match the PORT env var." type = number default = 3000 } ################################################################################ # AWS-specific variables (required when provider_type = "aws") ################################################################################ variable "aws_region" { description = "(AWS) AWS region where ECS resources are deployed." type = string default = "" } variable "aws_vpc_id" { description = "(AWS) VPC ID in which to create the ECS service and security group." type = string default = "" } variable "aws_subnet_ids" { description = "(AWS) List of private subnet IDs for the ECS Fargate tasks." type = list(string) default = [] } variable "aws_target_group_arn" { description = "(AWS) ARN of the ALB target group to register ECS tasks with." type = string default = "" } variable "aws_execution_role_arn" { description = "(AWS) IAM role ARN that ECS uses to pull images and write logs (ECS task execution role)." type = string default = "" } variable "aws_task_role_arn" { description = "(AWS) IAM role ARN granted to the running ECS task (allows it to call Secrets Manager, etc.)." type = string default = "" } variable "aws_log_group_name" { description = "(AWS) CloudWatch log group name where container logs are sent." type = string default = "/ecs/sentryagent-agentidp" } variable "aws_desired_count" { description = "(AWS) Number of ECS Fargate task instances to run." type = number default = 2 } variable "aws_cpu" { description = "(AWS) ECS task CPU units (256 = 0.25 vCPU)." type = number default = 512 } variable "aws_memory" { description = "(AWS) ECS task memory in MiB." type = number default = 1024 } # Secret ARNs — the ECS task fetches these from Secrets Manager at launch time. # The task execution role must have secretsmanager:GetSecretValue on each ARN. variable "aws_secret_database_url_arn" { description = "(AWS) ARN of the Secrets Manager secret holding DATABASE_URL." type = string default = "" sensitive = true } variable "aws_secret_redis_url_arn" { description = "(AWS) ARN of the Secrets Manager secret holding REDIS_URL." type = string default = "" sensitive = true } variable "aws_secret_jwt_private_key_arn" { description = "(AWS) ARN of the Secrets Manager secret holding JWT_PRIVATE_KEY." type = string default = "" sensitive = true } variable "aws_secret_jwt_public_key_arn" { description = "(AWS) ARN of the Secrets Manager secret holding JWT_PUBLIC_KEY." type = string default = "" sensitive = true } variable "aws_secret_vault_token_arn" { description = "(AWS) ARN of the Secrets Manager secret holding VAULT_TOKEN. Leave empty to omit Vault integration." type = string default = "" sensitive = true } variable "aws_vault_addr" { description = "(AWS) HashiCorp Vault address injected as a plain env var (not a secret). Leave empty to disable." type = string default = "" } variable "aws_vault_mount" { description = "(AWS) HashiCorp Vault KV v2 mount path." type = string default = "secret" } variable "aws_cors_origin" { description = "(AWS) Value for CORS_ORIGIN env var." type = string default = "*" } variable "aws_policy_dir" { description = "(AWS) Path inside the container where OPA policy files are located." type = string default = "/app/policies" } ################################################################################ # GCP-specific variables (required when provider_type = "gcp") ################################################################################ variable "gcp_project_id" { description = "(GCP) GCP project ID where Cloud Run and supporting resources live." type = string default = "" } variable "gcp_region" { description = "(GCP) GCP region for Cloud Run deployment." type = string default = "" } variable "gcp_service_account_email" { description = "(GCP) Service account email attached to the Cloud Run service." type = string default = "" } variable "gcp_vpc_connector_name" { description = "(GCP) Serverless VPC Access connector name for reaching Cloud SQL and Memorystore." type = string default = "" } variable "gcp_min_instances" { description = "(GCP) Minimum number of Cloud Run instances (set > 0 to avoid cold starts)." type = number default = 1 } variable "gcp_max_instances" { description = "(GCP) Maximum number of Cloud Run instances." type = number default = 10 } variable "gcp_cpu" { description = "(GCP) CPU limit for each Cloud Run container instance (e.g. '1', '2')." type = string default = "1" } variable "gcp_memory" { description = "(GCP) Memory limit for each Cloud Run container instance (e.g. '512Mi', '1Gi')." type = string default = "512Mi" } # Secret Manager secret IDs — the Cloud Run service fetches these at startup. variable "gcp_secret_database_url_id" { description = "(GCP) Secret Manager secret ID for DATABASE_URL." type = string default = "" sensitive = true } variable "gcp_secret_redis_url_id" { description = "(GCP) Secret Manager secret ID for REDIS_URL." type = string default = "" sensitive = true } variable "gcp_secret_jwt_private_key_id" { description = "(GCP) Secret Manager secret ID for JWT_PRIVATE_KEY." type = string default = "" sensitive = true } variable "gcp_secret_jwt_public_key_id" { description = "(GCP) Secret Manager secret ID for JWT_PUBLIC_KEY." type = string default = "" sensitive = true } variable "gcp_secret_vault_token_id" { description = "(GCP) Secret Manager secret ID for VAULT_TOKEN. Leave empty to omit Vault integration." type = string default = "" sensitive = true } variable "gcp_vault_addr" { description = "(GCP) HashiCorp Vault address injected as a plain env var. Leave empty to disable." type = string default = "" } variable "gcp_vault_mount" { description = "(GCP) HashiCorp Vault KV v2 mount path." type = string default = "secret" } variable "gcp_cors_origin" { description = "(GCP) Value for CORS_ORIGIN env var." type = string default = "*" } variable "gcp_policy_dir" { description = "(GCP) Path inside the Cloud Run container where OPA policy files are located." type = string default = "/app/policies" }