deployment/terraform/aws/variables.tf (250 lines of code) (raw):

# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # variable "environment" { description = "Environment name (development, production, etc)" type = string } variable "namespace" { description = "Application namespace" type = string } variable "region" { description = "AWS region to target" type = string } variable "enable_network" { description = "Use network module. Set to false to use your own network resources" type = bool default = true } variable "vpc_id" { description = "AWS VPC ID (if not using network module)" type = string default = "" } variable "vpc_cidr" { description = "RFC1918 CIDR range for VPC" type = string default = "" } variable "public_cidr" { description = "RFC1918 CIDR range for public subnets (subset of vpc_cidr)" type = string default = "" } variable "private_cidr" { description = "RFC1918 CIDR range for private subnets (subset of vpc_cidr)" type = string default = "" } variable "public_subnet_ids" { description = "List of public subnet IDs for deployment if not using network module" type = list(string) default = [] } variable "private_subnet_ids" { description = "List of private subnet IDs for deployment if not using network module" type = list(string) default = [] } variable "tags" { description = "Standard tags for all resources" type = map(any) default = { ManagedBy = "Terraform" } } variable "keycloak_alb_certificate_arn" { description = "ACM certificate used by Keycloak ALB" type = string } variable "alb_destroy_log_bucket" { description = "Destroy ALB log bucket on teardown" type = bool default = true } variable "container_cpu_units" { description = "CPU units to reserve for container (1024 units == 1 CPU)" type = number } variable "container_memory_limit" { description = "Container memory hard limit" type = number } variable "container_memory_reserved" { description = "Container memory starting reservation" type = number } variable "keycloak_container_port" { description = "Keycloak port exposed in container" type = number default = 8080 } variable "db_backup_retention_days" { description = "How long Database backups are retained" type = number } variable "db_backup_window" { description = "Daily time range during which backups happen" type = string default = "00:00-02:00" } variable "db_cluster_family" { description = "Family of DB cluster parameter group" type = string default = "aurora-postgresql15" } variable "db_cluster_size" { description = "Number of RDS cluster instances" type = number } variable "db_engine_version" { description = "Version of DB engine to use" type = string default = "15.4" } variable "db_instance_type" { description = "Instance type used for RDS instances" type = string } variable "db_maintenance_window" { description = "Weekly time range during which system maintenance can occur (UTC)" type = string default = "sat:03:00-sat:04:00" } variable "deletion_protection" { description = "Protect supporting resources from being deleted (ALB and RDS)" type = bool default = false } variable "deployment_maximum_percent" { description = "Maximum task instances allowed to run" type = number } variable "deployment_minimum_healthy_percent" { description = "Minimum percentage of healthy task instances" type = number } variable "desired_count" { description = "Number of ECS task instances to run" type = number } variable "keycloak_dns_name" { description = "Keycloak DNS" type = string } variable "dns_zone_id" { description = "Route53 Zone ID hosting Services" type = string } variable "encryption_configuration" { type = object({ encryption_type = string kms_key = any }) description = "ECR encryption configuration" default = { encryption_type = "AES256" kms_key = null } } variable "http_redirect" { description = "Controls whether port 80 should redirect to 443 (or not listen)" type = bool default = true } variable "http_ingress_cidr_blocks" { description = "CIDR ranges allowed to connect to service port 80" type = list(string) default = ["0.0.0.0/0"] } variable "https_ingress_cidr_blocks" { description = "CIDR ranges allowed to connect to service port 443" type = list(string) default = ["0.0.0.0/0"] } variable "jvm_heap_min" { description = "Minimum JVM heap size for application in MB" type = number } variable "jvm_heap_max" { description = "Maximum JVM heap size for application in MB" type = number } variable "jvm_meta_min" { description = "Minimum JVM meta space size for application in MB" type = number } variable "jvm_meta_max" { description = "Maximum JVM meta space size for application in MB" type = number } variable "internal" { description = "Whether environment should be exposed to Internet (if not using network module)" type = string default = false } variable "log_retention_days" { description = "Log retention for CloudWatch logs" type = number } variable "rds_source_region" { description = "Region of primary RDS cluster (needed to support encryption)" type = string default = "" } variable "route_table_ids" { description = "List of route tables used by s3 VPC endpoint (if not using network module)" type = list(string) default = [] } variable "stickiness" { type = object({ cookie_duration = number enabled = bool }) description = "Target group sticky configuration" default = { cookie_duration = null enabled = false } } variable "vault_alb_certificate_arn" { description = "ACM certificate used by Vault ALB" type = string } variable "vault_container_port" { description = "Vault port" type = number default = 8200 } variable "vault_ami" { description = "AMI used for Vault" type = string } variable "ec2_ssh_key_name" { description = "key pair to use for SSH access to instance" type = string } variable "vault_instance_type" { type = string description = "EC2 instance type" } variable "vault_version" { type = string description = "Vault version" } variable "vault_leader_tls_servername" { type = string description = "One of the shared DNS SAN used to create the certs use for mTLS" } variable "vault_secrets_manager_arn" { type = string description = "Secrets manager ARN" } variable "vault_min_nodes" { type = number description = "Minimum number of Vault nodes to deploy in ASG" } variable "vault_max_nodes" { type = number description = "Minimum number of Vault nodes to deploy in ASG" }