-
Notifications
You must be signed in to change notification settings - Fork 97
Expand file tree
/
Copy pathlaunch_template.tf
More file actions
63 lines (48 loc) · 2.37 KB
/
Copy pathlaunch_template.tf
File metadata and controls
63 lines (48 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
locals {
create_launch_template = var.metadata_options != null ? true : false
launch_template_name_parts = join("-", [var.cluster_name, var.node_group_name])
launch_template_name_hash = sha256(local.launch_template_name_parts)
launch_template_name = "${substr(local.launch_template_name_parts, 0, 120)}-${substr(local.launch_template_name_hash, 0, 7)}"
cpu_ami_name = data.aws_ec2_instance_type.current.supported_architectures[0] == "arm64" ? "amazon-linux-2023/arm64/standard" : "amazon-linux-2023/x86_64/standard"
is_gpu = length(data.aws_ec2_instance_type.current.gpus) > 0
ami_name = local.is_gpu ? "amazon-linux-2023/x86_64/nvidia" : local.cpu_ami_name
ami_release_prefix = local.is_gpu ? "amazon-eks-gpu-node" : "amazon-eks-node"
ami_release_date = var.ami_release_version == null ? "" : split("-", var.ami_release_version)[1]
ami_release_name = var.ami_release_version == null ? "recommended" : "${local.ami_release_prefix}-${var.kubernetes_version}-v${local.ami_release_date}"
}
data "aws_ssm_parameter" "eks_ami_release_version" {
count = var.disk_size != null ? 1 : 0
name = "/aws/service/eks/optimized-ami/${var.kubernetes_version}/${local.ami_name}/${local.ami_release_name}/image_id"
}
data "aws_ami" "eks_optimized" {
count = var.disk_size != null ? 1 : 0
owners = ["amazon"]
filter {
name = "image-id"
values = [nonsensitive(data.aws_ssm_parameter.eks_ami_release_version[0].value)]
}
}
resource "aws_launch_template" "current" {
count = local.create_launch_template ? 1 : 0
name = local.launch_template_name
tags = merge(var.tags, var.eks_metadata_tags)
dynamic "block_device_mappings" {
for_each = var.disk_size != null ? toset([1]) : toset([])
content {
device_name = data.aws_ami.eks_optimized[0].root_device_name
ebs {
volume_size = var.disk_size
}
}
}
dynamic "metadata_options" {
for_each = var.metadata_options != null ? toset([1]) : toset([])
content {
http_endpoint = var.metadata_options.http_endpoint
http_tokens = var.metadata_options.http_tokens
http_put_response_hop_limit = var.metadata_options.http_put_response_hop_limit
http_protocol_ipv6 = var.metadata_options.http_protocol_ipv6
instance_metadata_tags = var.metadata_options.instance_metadata_tags
}
}
}