# Variables ==================================================================== variable "tags" { description = "Tags applied to all resources." type = map(string) default = {} } variable "instances" { description = <<-EOT Map of EC2 instance definitions. ami_id is required and must be explicitly passed in to ensure deterministic builds. EOT type = map(object({ name_suffix = string ami_id = string instance_type = string subnet_id = string iam_instance_profile = optional(string) key_name = optional(string) associate_public_ip = optional(bool, false) ebs_optimized = optional(bool, true) monitoring = optional(bool, false) placement_group = optional(string) tenancy = optional(string, "default") primary_private_ip = optional(string) secondary_private_ips = optional(list(string), []) user_data = optional(string) user_data_base64 = optional(string) metadata_http_tokens = optional(string, "required") metadata_hop_limit = optional(number, 1) root_volume = object({ size = number type = optional(string, "gp3") kms_key_id = optional(string) delete_on_termination = optional(bool, true) tags = optional(map(string), {}) }) data_volumes = optional(list(object({ device_name = string volume_size = number volume_type = optional(string, "gp3") kms_key_id = optional(string) delete_on_termination = optional(bool, true) iops = optional(number) throughput = optional(number) tags = optional(map(string), {}) })), []) instance_tags = optional(map(string), {}) })) default = {} }