modules/terraform/aws/variables.tf (163 lines of code) (raw):
variable "json_input" {
description = "value of the json input"
type = object({
run_id = string
region = string
creation_time = string
user_data_path = optional(string, "")
k8s_machine_type = optional(string, null)
ena_express = optional(bool, null)
})
validation {
condition = can(formatdate("", var.json_input.creation_time))
error_message = "The creation_time value must be a valid rfc3339 format string (e.g.: '2024-10-17T18:30:42Z')"
}
validation {
condition = timecmp(var.json_input.creation_time, timeadd(plantimestamp(), "+1h")) < 0
error_message = "The creation_time must not be more than 1 hour from now (${plantimestamp()})"
}
}
variable "owner" {
description = "Owner of the scenario"
type = string
}
variable "scenario_name" {
description = "Name of the scenario"
type = string
validation {
condition = length(var.scenario_name) <= 30
error_message = "scenario_name should be within 30 characters"
}
}
variable "scenario_type" {
description = "value of the scenario type"
type = string
}
variable "deletion_delay" {
description = "Time duration after which the resources can be deleted (e.g., '1h', '2h', '4h')"
type = string
default = "2h"
validation {
condition = timecmp(timeadd(plantimestamp(), var.deletion_delay), timeadd(plantimestamp(), "+72h")) <= 0
error_message = "The deletion_delay must not be more than 3 days (72h)"
}
}
variable "network_config_list" {
description = "Configuration for creating the server network."
type = list(object({
role = string
vpc_name = string
vpc_cidr_block = string
secondary_ipv4_cidr_blocks = optional(list(string))
subnet = list(object({
name = string
cidr_block = string
zone_suffix = string
map_public_ip_on_launch = optional(bool, false)
}))
security_group_name = string
route_tables = list(object({
name = string
cidr_block = string
nat_gateway_name = optional(string)
}))
route_table_associations = list(object({
name = string
subnet_name = string
route_table_name = string
}))
nat_gateway_public_ips = optional(list(object({
name = string
})))
nat_gateways = optional(list(object({
name = string
public_ip_name = string
subnet_name = string
})))
sg_rules = object({
ingress = list(object({
from_port = number
to_port = number
protocol = string
cidr_block = string
})),
egress = list(object({
from_port = number
to_port = number
protocol = string
cidr_block = string
}))
})
}))
default = []
}
variable "eks_config_list" {
type = list(object({
role = string
eks_name = string
vpc_name = string
policy_arns = list(string)
enable_karpenter = optional(bool, false)
enable_cluster_autoscaler = optional(bool, false)
eks_managed_node_groups = list(object({
name = string
ami_type = string
instance_types = list(string)
min_size = number
max_size = number
desired_size = number
capacity_type = optional(string, "ON_DEMAND")
labels = optional(map(string), {})
subnet_names = optional(list(string), null)
ena_express = optional(bool, null)
taints = optional(list(object({
key = string
value = string
effect = string
})), [])
block_device_mappings = optional(list(object({
device_name = string
ebs = object({
delete_on_termination = optional(bool, true)
iops = optional(number, null)
throughput = optional(number, null)
volume_size = optional(number, null)
volume_type = optional(string, null)
})
})), [])
}))
eks_addons = list(object({
name = string
version = optional(string)
service_account = optional(string)
policy_arns = optional(list(string), [])
configuration_values = optional(object({
env = optional(map(string))
}))
vpc_cni_warm_prefix_target = optional(number, 1)
before_compute = optional(bool, false)
}))
kubernetes_version = optional(string, null)
auto_scaler_profile = optional(object({
balance_similar_node_groups = optional(bool, false)
expander = optional(string, "random")
max_graceful_termination_sec = optional(string, "600")
max_node_provision_time = optional(string, "15m")
max_unready_nodes = optional(number, 3)
max_unready_percentage = optional(number, 45)
new_pod_scale_up_delay = optional(string, "10s")
scale_down_delay_after_add = optional(string, "10m")
scale_down_delay_after_delete = optional(string, "10s")
scale_down_delay_after_failure = optional(string, "3m")
scale_down_unneeded = optional(string, "10m")
scale_down_unready = optional(string, "20m")
scale_down_utilization_threshold = optional(string, "0.5")
scan_interval = optional(string, "10s")
empty_bulk_delete_max = optional(string, "10")
skip_nodes_with_local_storage = optional(bool, true)
skip_nodes_with_system_pods = optional(bool, true)
}))
enable_cni_metrics_helper = optional(bool, false)
}))
default = []
}