Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add support for additional volumes in launch templates and launch configurations #800

Merged
merged 9 commits into from
Mar 24, 2020
1 change: 1 addition & 0 deletions local.tf
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ locals {
service_linked_role_arn = "" # Arn of custom service linked role that Auto Scaling group will use. Useful when you have encrypted EBS
termination_policies = [] # A list of policies to decide how the instances in the auto scale group should be terminated.
platform = "linux" # Platform of workers. either "linux" or "windows"
additional_ebs_volumes = [] # A list of additional volumes to be attached to the instances on this Auto Scaling group. Each volume should be an object with the following: block_device_name (required), volume_size, volume_type, iops, encrypted, kms_key_id (only on launch-template), delete_on_termination. Optional values are grabbed from root volume or from defaults
# Settings for launch templates
root_block_device_name = data.aws_ami.eks_worker.root_device_name # Root device name for workers. If non is provided, will assume default AMI was used.
root_kms_key_id = "" # The KMS key to use when encrypting the root storage device
Expand Down
30 changes: 30 additions & 0 deletions workers.tf
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,36 @@ resource "aws_launch_configuration" "workers" {
delete_on_termination = true
}

dynamic "ebs_block_device" {
for_each = lookup(var.worker_groups[count.index], "additional_ebs_volumes", local.workers_group_defaults["additional_ebs_volumes"])

content {
device_name = ebs_block_device.value.block_device_name
volume_size = lookup(
ebs_block_device.value,
"volume_size",
local.workers_group_defaults["root_volume_size"],
)
volume_type = lookup(
ebs_block_device.value,
"volume_type",
local.workers_group_defaults["root_volume_type"],
)
iops = lookup(
ebs_block_device.value,
"iops",
local.workers_group_defaults["root_iops"],
)
encrypted = lookup(
ebs_block_device.value,
"encrypted",
local.workers_group_defaults["root_encrypted"],
)
delete_on_termination = lookup(ebs_block_device.value, "delete_on_termination", true)
}

}

lifecycle {
create_before_destroy = true
}
Expand Down
37 changes: 37 additions & 0 deletions workers_launch_template.tf
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,43 @@ resource "aws_launch_template" "workers_launch_template" {
}
}

dynamic "block_device_mappings" {
for_each = lookup(var.worker_groups_launch_template[count.index], "additional_ebs_volumes", local.workers_group_defaults["additional_ebs_volumes"])
content {
device_name = block_device_mappings.value.block_device_name

ebs {
jaimehrubiks marked this conversation as resolved.
Show resolved Hide resolved
volume_size = lookup(
block_device_mappings.value,
"volume_size",
local.workers_group_defaults["root_volume_size"],
)
volume_type = lookup(
block_device_mappings.value,
"volume_type",
local.workers_group_defaults["root_volume_type"],
)
iops = lookup(
block_device_mappings.value,
"iops",
local.workers_group_defaults["root_iops"],
)
encrypted = lookup(
block_device_mappings.value,
"encrypted",
local.workers_group_defaults["root_encrypted"],
)
kms_key_id = lookup(
block_device_mappings.value,
"kms_key_id",
local.workers_group_defaults["root_kms_key_id"],
)
delete_on_termination = lookup(block_device_mappings.value, "delete_on_termination", true)
}
}

}

tag_specifications {
resource_type = "volume"

Expand Down