Skip to content

Commit

Permalink
fix: Set an ASG's launch template version to an explicit version
Browse files Browse the repository at this point in the history
automatically. This will ensure that an instance refresh will be
triggered whenever the launch template changes.
  • Loading branch information
Benjamin Ash committed May 19, 2021
1 parent 91545ab commit 4641c6c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
5 changes: 4 additions & 1 deletion examples/instance_refresh/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -214,9 +214,12 @@ module "eks" {
asg_max_size = 2
asg_desired_capacity = 2
instance_refresh_enabled = true
instance_refresh_triggers = ["tag"]
instance_refresh_instance_warmup = 60
public_ip = true
metadata_http_put_response_hop_limit = 3
use_latest_version = true
update_default_version = true
instance_refresh_triggers = ["tag"]
tags = [
{
key = "aws-node-termination-handler/managed"
Expand Down
4 changes: 3 additions & 1 deletion local.tf
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ locals {
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
launch_template_id = null # The id of the launch template used for managed node_groups
launch_template_version = "$Latest" # The lastest version of the launch template to use in the autoscaling group
launch_template_version = "$Latest" # The latest version of the launch template to use in the autoscaling and node groups. Must be explicitly set in `worker_groups_launch_template`.
use_latest_version = true # Set the autoscaling group to use the latest version of the launch template, otherwise the default template version will be used. Ignored when `launch_template_version` is set in `worker_groups_launch_template`.
update_default_version = false # Update the autoscaling group launch template's default version upon each update
launch_template_placement_tenancy = "default" # The placement tenancy for instances
launch_template_placement_group = null # The name of the placement group into which to launch the instances, if any.
root_encrypted = false # Whether the volume should be encrypted or not
Expand Down
22 changes: 20 additions & 2 deletions workers_launch_template.tf
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,13 @@ resource "aws_autoscaling_group" "workers_launch_template" {
version = lookup(
var.worker_groups_launch_template[count.index],
"launch_template_version",
local.workers_group_defaults["launch_template_version"],
lookup(
var.worker_groups_launch_template[count.index],
"use_latest_version",
local.workers_group_defaults["use_latest_version"]
)
? aws_launch_template.workers_launch_template.*.latest_version[count.index]
: aws_launch_template.workers_launch_template.*.default_version[count.index]
)
}

Expand Down Expand Up @@ -169,7 +175,13 @@ resource "aws_autoscaling_group" "workers_launch_template" {
version = lookup(
var.worker_groups_launch_template[count.index],
"launch_template_version",
local.workers_group_defaults["launch_template_version"],
lookup(
var.worker_groups_launch_template[count.index],
"use_latest_version",
local.workers_group_defaults["use_latest_version"]
)
? aws_launch_template.workers_launch_template.*.latest_version[count.index]
: aws_launch_template.workers_launch_template.*.default_version[count.index]
)
}
}
Expand Down Expand Up @@ -278,6 +290,12 @@ resource "aws_launch_template" "workers_launch_template" {
count.index,
)}"

update_default_version = lookup(
var.worker_groups_launch_template[count.index],
"update_default_version",
local.workers_group_defaults["update_default_version"],
)

network_interfaces {
associate_public_ip_address = lookup(
var.worker_groups_launch_template[count.index],
Expand Down

0 comments on commit 4641c6c

Please sign in to comment.