Skip to content

Commit 814a2f4

Browse files
ChrisMcKeeaknyshcloudpossebot
authored
Windows node support (#139)
* Add initial changes for windows managed node support Add taint example to windows doc * Update iam.tf Co-authored-by: Andriy Knysh <[email protected]> * Update Changes to allow windows autotaint label, fixes * Add the windows taint by default to windows nodes * Correct ami_kind filter * Alter userdata nt to match current userscript * Guard userdata against errors from userscript stopping node-join. * Remove disk_size * Add windnows_coredns_service_address because EKS Windows networking isn't fab. * Remove extraneous statement, fix output * Add drive mapping to windows userdata; put bootstrap extra args in correct place and remove extraneous params (based on eksctl code base and aws generated script) * Convert ami.tf maps to map format ("":"" to key = "value") * Revert min provider; remove enclosure on ipv6 policy * Uncomment userdata/label versions in example * Remove leading whitespace in markdown * Change `ami_release_version` regex to support windows ami format Tested here: https://regex101.com/r/xb7q2f/2 * Auto Format * Update versions.tf Ref version change related to change log https://github.com/hashicorp/terraform-provider-aws/blob/main/CHANGELOG.md#4480-december-19-2022 * Revert renaming of linux worker node group in example/complete * Auto Format --------- Co-authored-by: Andriy Knysh <[email protected]> Co-authored-by: cloudpossebot <[email protected]>
1 parent 04cddc1 commit 814a2f4

19 files changed

+195
-56
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,7 @@
1313

1414
# vim editor
1515
*.swp
16+
17+
/.terraform.lock.hcl
18+
/.vscode
19+
/examples/complete/.terraform.lock.hcl

README.md

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,19 +243,56 @@ Available targets:
243243
```
244244
<!-- markdownlint-restore -->
245245
<!-- markdownlint-disable -->
246+
## Windows Managed Node groups
247+
248+
Windows managed node-groups have a few pre-requisites.
249+
250+
* Your cluster must contain at least one linux based worker node
251+
* Your EKS Cluster must have the `AmazonEKSVPCResourceController` and `AmazonEKSClusterPolicy` policies attached
252+
* Your cluster must have a config-map called amazon-vpc-cni with the following content
253+
254+
```yaml
255+
apiVersion: v1
256+
kind: ConfigMap
257+
metadata:
258+
name: amazon-vpc-cni
259+
namespace: kube-system
260+
data:
261+
enable-windows-ipam: "true"
262+
```
263+
264+
* Windows nodes will automatically be tainted
265+
266+
```yaml
267+
kubernetes_taints = [{
268+
key = "WINDOWS"
269+
value = "true"
270+
effect = "NO_SCHEDULE"
271+
}]
272+
```
273+
* Any pods that target Windows will need to have the following attributes set in their manifest
274+
275+
```yaml
276+
nodeSelector:
277+
kubernetes.io/os: windows
278+
kubernetes.io/arch: amd64
279+
```
280+
281+
https://docs.aws.amazon.com/eks/latest/userguide/windows-support.html
282+
<!-- markdownlint-disable -->
246283
## Requirements
247284
248285
| Name | Version |
249286
|------|---------|
250287
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.14.11 |
251-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.56 |
288+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.48 |
252289
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 |
253290
254291
## Providers
255292
256293
| Name | Version |
257294
|------|---------|
258-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.56 |
295+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.48 |
259296
| <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 |
260297
261298
## Modules
@@ -294,8 +331,8 @@ Available targets:
294331
| <a name="input_additional_tag_map"></a> [additional\_tag\_map](#input\_additional\_tag\_map) | Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`.<br>This is for some rare cases where resources want additional configuration of tags<br>and therefore take a list of maps with tag key, value, and additional configuration. | `map(string)` | `{}` | no |
295332
| <a name="input_after_cluster_joining_userdata"></a> [after\_cluster\_joining\_userdata](#input\_after\_cluster\_joining\_userdata) | Additional `bash` commands to execute on each worker node after joining the EKS cluster (after executing the `bootstrap.sh` script). For more info, see https://kubedex.com/90-days-of-aws-eks-in-production | `list(string)` | `[]` | no |
296333
| <a name="input_ami_image_id"></a> [ami\_image\_id](#input\_ami\_image\_id) | AMI to use. Ignored if `launch_template_id` is supplied. | `list(string)` | `[]` | no |
297-
| <a name="input_ami_release_version"></a> [ami\_release\_version](#input\_ami\_release\_version) | EKS AMI version to use, e.g. For AL2 "1.16.13-20200821" or for bottlerocket "1.2.0-ccf1b754" (no "v"). For AL2 and bottlerocket, it defaults to latest version for Kubernetes version. | `list(string)` | `[]` | no |
298-
| <a name="input_ami_type"></a> [ami\_type](#input\_ami\_type) | Type of Amazon Machine Image (AMI) associated with the EKS Node Group.<br>Defaults to `AL2_x86_64`. Valid values: `AL2_x86_64`, `AL2_x86_64_GPU`, `AL2_ARM_64`, `BOTTLEROCKET_x86_64`, and `BOTTLEROCKET_ARM_64`. | `string` | `"AL2_x86_64"` | no |
334+
| <a name="input_ami_release_version"></a> [ami\_release\_version](#input\_ami\_release\_version) | EKS AMI version to use, e.g. For AL2 "1.16.13-20200821" or for bottlerocket "1.2.0-ccf1b754" (no "v") or for Windows "2023.02.14". For AL2, bottlerocket and Windows, it defaults to latest version for Kubernetes version. | `list(string)` | `[]` | no |
335+
| <a name="input_ami_type"></a> [ami\_type](#input\_ami\_type) | Type of Amazon Machine Image (AMI) associated with the EKS Node Group.<br>Defaults to `AL2_x86_64`. Valid values: `AL2_x86_64, AL2_x86_64_GPU, AL2_ARM_64, CUSTOM, BOTTLEROCKET_ARM_64, BOTTLEROCKET_x86_64, BOTTLEROCKET_ARM_64_NVIDIA, BOTTLEROCKET_x86_64_NVIDIA, WINDOWS_CORE_2019_x86_64, WINDOWS_FULL_2019_x86_64, WINDOWS_CORE_2022_x86_64, WINDOWS_FULL_2022_x86_64`. | `string` | `"AL2_x86_64"` | no |
299336
| <a name="input_associate_cluster_security_group"></a> [associate\_cluster\_security\_group](#input\_associate\_cluster\_security\_group) | When true, associate the default cluster security group to the nodes. If disabled the EKS managed security group will not<br>be associated to the nodes, therefore the communications between pods and nodes will not work. Be aware that if no `associated_security_group_ids`<br>nor `ssh_access_security_group_ids` are provided then the nodes will have no inbound or outbound rules. | `bool` | `true` | no |
300337
| <a name="input_associated_security_group_ids"></a> [associated\_security\_group\_ids](#input\_associated\_security\_group\_ids) | A list of IDs of Security Groups to associate the node group with, in addition to the EKS' created security group.<br>These security groups will not be modified. | `list(string)` | `[]` | no |
301338
| <a name="input_attributes"></a> [attributes](#input\_attributes) | ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`,<br>in the order they appear in the list. New attributes are appended to the<br>end of the list. The elements of the list are joined by the `delimiter`<br>and treated as a single ID element. | `list(string)` | `[]` | no |
@@ -367,6 +404,7 @@ Available targets:
367404
| <a name="output_eks_node_group_role_name"></a> [eks\_node\_group\_role\_name](#output\_eks\_node\_group\_role\_name) | Name of the worker nodes IAM role |
368405
| <a name="output_eks_node_group_status"></a> [eks\_node\_group\_status](#output\_eks\_node\_group\_status) | Status of the EKS Node Group |
369406
| <a name="output_eks_node_group_tags_all"></a> [eks\_node\_group\_tags\_all](#output\_eks\_node\_group\_tags\_all) | A map of tags assigned to the resource, including those inherited from the provider default\_tags configuration block. |
407+
| <a name="output_eks_node_group_windows_note"></a> [eks\_node\_group\_windows\_note](#output\_eks\_node\_group\_windows\_note) | Instructions on changes a user needs to follow or script for a windows node group in the event of a custom ami |
370408
<!-- markdownlint-restore -->
371409

372410

README.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ usage: |2-
191191
192192
include:
193193
- "docs/targets.md"
194+
- "docs/windows.md"
194195
- "docs/terraform.md"
195196

196197
# Contributors to this project

ami.tf

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,34 @@
22
locals {
33
# "amazon-eks-gpu-node-",
44
arch_label_map = {
5-
"AL2_x86_64" : "",
6-
"AL2_x86_64_GPU" : "-gpu",
7-
"AL2_ARM_64" : "-arm64",
8-
"BOTTLEROCKET_x86_64" : "x86_64",
9-
"BOTTLEROCKET_ARM_64" : "aarch64"
5+
AL2_x86_64 = "",
6+
AL2_x86_64_GPU = "-gpu",
7+
AL2_ARM_64 = "-arm64",
8+
BOTTLEROCKET_x86_64 = "x86_64",
9+
BOTTLEROCKET_ARM_64 = "aarch64"
10+
BOTTLEROCKET_ARM_64_NVIDIA = "-gpu"
11+
BOTTLEROCKET_x86_64_NVIDIA = "-gpu"
12+
WINDOWS_CORE_2019_x86_64 = ""
13+
WINDOWS_FULL_2019_x86_64 = ""
14+
WINDOWS_CORE_2022_x86_64 = ""
15+
WINDOWS_FULL_2022_x86_64 = ""
1016
}
1117

12-
ami_kind = split("_", var.ami_type)[0]
18+
ami_kind = split("_", var.ami_type)[0] != "WINDOWS" ? split("_", var.ami_type)[0] : format("WINDOWS_%s_%s", split("_", var.ami_type)[1], split("_", var.ami_type)[2])
1319

1420
ami_format = {
1521
# amazon-eks{arch_label}-node-{ami_kubernetes_version}-v{ami_version}
1622
# e.g. amazon-eks-arm64-node-1.21-v20211013
17-
"AL2" : "amazon-eks%s-node-%s"
23+
AL2 = "amazon-eks%s-node-%s"
1824
# bottlerocket-aws-k8s-{ami_kubernetes_version}-{arch_label}-v{ami_version}
1925
# e.g. bottlerocket-aws-k8s-1.21-x86_64-v1.2.0-ccf1b754
20-
"BOTTLEROCKET" : "bottlerocket-aws-k8s-%s-%s-%s"
26+
BOTTLEROCKET = "bottlerocket-aws-k8s-%s-%s-%s"
27+
# Windows_Server-2019-English-Core-EKS_Optimized-{ami_kubernetes_version}-{ami_version}
28+
# e.g. Windows_Server-2019-English-Core-EKS_Optimized-1.23-2022.11.08
29+
WINDOWS_CORE_2019 = "Windows_Server-2019-English-Core-EKS_Optimized-%s-%s"
30+
WINDOWS_FULL_2019 = "Windows_Server-2019-English-Full-EKS_Optimized-%s-%s"
31+
WINDOWS_CORE_2022 = "Windows_Server-2022-English-Core-EKS_Optimized-%s-%s"
32+
WINDOWS_FULL_2022 = "Windows_Server-2022-English-Full-EKS_Optimized-%s-%s"
2133
}
2234

2335
# Kubernetes version priority (first one to be set wins)
@@ -37,19 +49,24 @@ locals {
3749
# if ami_release_version = "1.21-20211013"
3850
# insert the letter v prior to the ami_version so it becomes 1.21-v20211013
3951
# if not, use the kubernetes version
40-
"AL2" : (length(var.ami_release_version) == 1 ?
41-
replace(var.ami_release_version[0], "/^(\\d+\\.\\d+)\\.\\d+-(\\d+)$/", "$1-v$2") :
42-
"${local.ami_kubernetes_version}-*"),
52+
AL2 = (length(var.ami_release_version) == 1 ? replace(var.ami_release_version[0], "/^(\\d+\\.\\d+)\\.\\d+-(\\d+)$/", "$1-v$2") : "${local.ami_kubernetes_version}-*"),
4353
# if ami_release_version = "1.2.0-ccf1b754"
44-
# prefex the ami release version with the letter v
54+
# prefix the ami release version with the letter v
4555
# if not, use an asterisk
46-
"BOTTLEROCKET" : (length(var.ami_release_version) == 1 ?
47-
format("v%s", var.ami_release_version[0]) : "*"),
56+
BOTTLEROCKET = (length(var.ami_release_version) == 1 ? format("v%s", var.ami_release_version[0]) : "*"),
57+
WINDOWS_CORE_2019 = (length(var.ami_release_version) == 1 ? format("%s", var.ami_release_version[0]) : "*"),
58+
WINDOWS_FULL_2019 = (length(var.ami_release_version) == 1 ? format("%s", var.ami_release_version[0]) : "*"),
59+
WINDOWS_CORE_2022 = (length(var.ami_release_version) == 1 ? format("%s", var.ami_release_version[0]) : "*"),
60+
WINDOWS_FULL_2022 = (length(var.ami_release_version) == 1 ? format("%s", var.ami_release_version[0]) : "*"),
4861
} : {}
4962

5063
ami_regex = local.need_ami_id ? {
51-
"AL2" : format(local.ami_format["AL2"], local.arch_label_map[var.ami_type], local.ami_version_regex[local.ami_kind]),
52-
"BOTTLEROCKET" : format(local.ami_format["BOTTLEROCKET"], local.ami_kubernetes_version, local.arch_label_map[var.ami_type], local.ami_version_regex[local.ami_kind]),
64+
AL2 = format(local.ami_format["AL2"], local.arch_label_map[var.ami_type], local.ami_version_regex[local.ami_kind]),
65+
BOTTLEROCKET = format(local.ami_format["BOTTLEROCKET"], local.ami_kubernetes_version, local.arch_label_map[var.ami_type], local.ami_version_regex[local.ami_kind]),
66+
WINDOWS_CORE_2019 = format(local.ami_format["WINDOWS_CORE_2019"], local.ami_kubernetes_version, local.ami_version_regex[local.ami_kind]),
67+
WINDOWS_FULL_2019 = format(local.ami_format["WINDOWS_FULL_2019"], local.ami_kubernetes_version, local.ami_version_regex[local.ami_kind]),
68+
WINDOWS_CORE_2022 = format(local.ami_format["WINDOWS_CORE_2022"], local.ami_kubernetes_version, local.ami_version_regex[local.ami_kind]),
69+
WINDOWS_FULL_2022 = format(local.ami_format["WINDOWS_FULL_2022"], local.ami_kubernetes_version, local.ami_version_regex[local.ami_kind]),
5370
} : {}
5471
}
5572

docs/terraform.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
| Name | Version |
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.14.11 |
7-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.56 |
7+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.48 |
88
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 |
99

1010
## Providers
1111

1212
| Name | Version |
1313
|------|---------|
14-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.56 |
14+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.48 |
1515
| <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 |
1616

1717
## Modules
@@ -50,8 +50,8 @@
5050
| <a name="input_additional_tag_map"></a> [additional\_tag\_map](#input\_additional\_tag\_map) | Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`.<br>This is for some rare cases where resources want additional configuration of tags<br>and therefore take a list of maps with tag key, value, and additional configuration. | `map(string)` | `{}` | no |
5151
| <a name="input_after_cluster_joining_userdata"></a> [after\_cluster\_joining\_userdata](#input\_after\_cluster\_joining\_userdata) | Additional `bash` commands to execute on each worker node after joining the EKS cluster (after executing the `bootstrap.sh` script). For more info, see https://kubedex.com/90-days-of-aws-eks-in-production | `list(string)` | `[]` | no |
5252
| <a name="input_ami_image_id"></a> [ami\_image\_id](#input\_ami\_image\_id) | AMI to use. Ignored if `launch_template_id` is supplied. | `list(string)` | `[]` | no |
53-
| <a name="input_ami_release_version"></a> [ami\_release\_version](#input\_ami\_release\_version) | EKS AMI version to use, e.g. For AL2 "1.16.13-20200821" or for bottlerocket "1.2.0-ccf1b754" (no "v"). For AL2 and bottlerocket, it defaults to latest version for Kubernetes version. | `list(string)` | `[]` | no |
54-
| <a name="input_ami_type"></a> [ami\_type](#input\_ami\_type) | Type of Amazon Machine Image (AMI) associated with the EKS Node Group.<br>Defaults to `AL2_x86_64`. Valid values: `AL2_x86_64`, `AL2_x86_64_GPU`, `AL2_ARM_64`, `BOTTLEROCKET_x86_64`, and `BOTTLEROCKET_ARM_64`. | `string` | `"AL2_x86_64"` | no |
53+
| <a name="input_ami_release_version"></a> [ami\_release\_version](#input\_ami\_release\_version) | EKS AMI version to use, e.g. For AL2 "1.16.13-20200821" or for bottlerocket "1.2.0-ccf1b754" (no "v") or for Windows "2023.02.14". For AL2, bottlerocket and Windows, it defaults to latest version for Kubernetes version. | `list(string)` | `[]` | no |
54+
| <a name="input_ami_type"></a> [ami\_type](#input\_ami\_type) | Type of Amazon Machine Image (AMI) associated with the EKS Node Group.<br>Defaults to `AL2_x86_64`. Valid values: `AL2_x86_64, AL2_x86_64_GPU, AL2_ARM_64, CUSTOM, BOTTLEROCKET_ARM_64, BOTTLEROCKET_x86_64, BOTTLEROCKET_ARM_64_NVIDIA, BOTTLEROCKET_x86_64_NVIDIA, WINDOWS_CORE_2019_x86_64, WINDOWS_FULL_2019_x86_64, WINDOWS_CORE_2022_x86_64, WINDOWS_FULL_2022_x86_64`. | `string` | `"AL2_x86_64"` | no |
5555
| <a name="input_associate_cluster_security_group"></a> [associate\_cluster\_security\_group](#input\_associate\_cluster\_security\_group) | When true, associate the default cluster security group to the nodes. If disabled the EKS managed security group will not<br>be associated to the nodes, therefore the communications between pods and nodes will not work. Be aware that if no `associated_security_group_ids`<br>nor `ssh_access_security_group_ids` are provided then the nodes will have no inbound or outbound rules. | `bool` | `true` | no |
5656
| <a name="input_associated_security_group_ids"></a> [associated\_security\_group\_ids](#input\_associated\_security\_group\_ids) | A list of IDs of Security Groups to associate the node group with, in addition to the EKS' created security group.<br>These security groups will not be modified. | `list(string)` | `[]` | no |
5757
| <a name="input_attributes"></a> [attributes](#input\_attributes) | ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`,<br>in the order they appear in the list. New attributes are appended to the<br>end of the list. The elements of the list are joined by the `delimiter`<br>and treated as a single ID element. | `list(string)` | `[]` | no |
@@ -123,4 +123,5 @@
123123
| <a name="output_eks_node_group_role_name"></a> [eks\_node\_group\_role\_name](#output\_eks\_node\_group\_role\_name) | Name of the worker nodes IAM role |
124124
| <a name="output_eks_node_group_status"></a> [eks\_node\_group\_status](#output\_eks\_node\_group\_status) | Status of the EKS Node Group |
125125
| <a name="output_eks_node_group_tags_all"></a> [eks\_node\_group\_tags\_all](#output\_eks\_node\_group\_tags\_all) | A map of tags assigned to the resource, including those inherited from the provider default\_tags configuration block. |
126+
| <a name="output_eks_node_group_windows_note"></a> [eks\_node\_group\_windows\_note](#output\_eks\_node\_group\_windows\_note) | Instructions on changes a user needs to follow or script for a windows node group in the event of a custom ami |
126127
<!-- markdownlint-restore -->

docs/windows.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<!-- markdownlint-disable -->
2+
## Windows Managed Node groups
3+
4+
Windows managed node-groups have a few pre-requisites.
5+
6+
* Your cluster must contain at least one linux based worker node
7+
* Your EKS Cluster must have the `AmazonEKSVPCResourceController` and `AmazonEKSClusterPolicy` policies attached
8+
* Your cluster must have a config-map called amazon-vpc-cni with the following content
9+
10+
```yaml
11+
apiVersion: v1
12+
kind: ConfigMap
13+
metadata:
14+
name: amazon-vpc-cni
15+
namespace: kube-system
16+
data:
17+
enable-windows-ipam: "true"
18+
```
19+
20+
* Windows nodes will automatically be tainted
21+
22+
```yaml
23+
kubernetes_taints = [{
24+
key = "WINDOWS"
25+
value = "true"
26+
effect = "NO_SCHEDULE"
27+
}]
28+
```
29+
* Any pods that target Windows will need to have the following attributes set in their manifest
30+
31+
```yaml
32+
nodeSelector:
33+
kubernetes.io/os: windows
34+
kubernetes.io/arch: amd64
35+
```
36+
37+
https://docs.aws.amazon.com/eks/latest/userguide/windows-support.html

examples/complete/fixtures.us-east-2.tfvars

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ max_size = 3
2626

2727
min_size = 2
2828

29-
disk_size = 20
30-
3129
kubernetes_labels = {
3230
terratest = "true"
3331
}

examples/complete/main.tf

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,9 @@ module "https_sg" {
114114
context = module.label.context
115115
}
116116

117-
118117
module "eks_cluster" {
119-
source = "cloudposse/eks-cluster/aws"
120-
version = "2.4.0"
121-
118+
source = "cloudposse/eks-cluster/aws"
119+
version = "2.4.0"
122120
region = var.region
123121
vpc_id = module.vpc.vpc_id
124122
subnet_ids = module.subnets.public_subnet_ids
@@ -147,7 +145,7 @@ module "eks_node_group" {
147145
kubernetes_version = [var.kubernetes_version]
148146
kubernetes_labels = merge(var.kubernetes_labels, { attributes = coalesce(join(module.this.delimiter, module.this.attributes), "none") })
149147
kubernetes_taints = var.kubernetes_taints
150-
# disk_size = var.disk_size
148+
151149
ec2_ssh_key_name = var.ec2_ssh_key_name
152150
ssh_access_security_group_ids = [module.ssh_source_access.id]
153151
associated_security_group_ids = [module.ssh_source_access.id, module.https_sg.id]

examples/complete/outputs.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ output "eks_node_group_cbd_pet_name" {
9393
value = module.eks_node_group.eks_node_group_cbd_pet_name
9494
}
9595

96-
9796
output "eks_node_group_launch_template_id" {
9897
value = module.eks_node_group.eks_node_group_launch_template_id
9998
}

0 commit comments

Comments
 (0)