Skip to content

Commit 6c613ca

Browse files
authored
Support AWS Provider V5 (#101)
1 parent 52248ad commit 6c613ca

File tree

12 files changed

+849
-352
lines changed

12 files changed

+849
-352
lines changed

.github/workflows/release-branch.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ on:
1010
- 'docs/**'
1111
- 'examples/**'
1212
- 'test/**'
13+
- 'README.*'
1314

1415
permissions:
1516
contents: write

.github/workflows/release-published.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ permissions:
1111

1212
jobs:
1313
terraform-module:
14-
uses: cloudposse/github-actions-workflows-terraform-module/.github/workflows/release.yml@main
14+
uses: cloudposse/github-actions-workflows-terraform-module/.github/workflows/release-published.yml@main

README.md

Lines changed: 115 additions & 204 deletions
Large diffs are not rendered by default.

README.yaml

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ related:
5050
url: "https://github.com/cloudposse/terraform-aws-ec2-instance-group"
5151
# Short description of this project
5252
description: |-
53-
Terraform module to provision AWS resources to run EC2 worker nodes for [Elastic Container Service for Kubernetes](https://aws.amazon.com/eks/).
53+
Terraform module to provision AWS resources to run EC2 worker nodes for [Elastic Kubernetes Service](https://aws.amazon.com/eks/).
5454
5555
Instantiate it multiple times to create many EKS worker node pools with specific settings such as GPUs, EC2 instance types, or autoscale parameters.
5656
introduction: |-
@@ -79,23 +79,29 @@ usage: |2-
7979
}
8080
8181
module "vpc" {
82-
source = "git::https://github.com/cloudposse/terraform-aws-vpc.git?ref=tags/0.8.0"
83-
namespace = var.namespace
84-
stage = var.stage
85-
name = var.name
86-
cidr_block = "172.16.0.0/16"
87-
tags = local.tags
82+
source = "cloudposse/vpc/aws"
83+
version = "2.1.1"
84+
85+
namespace = var.namespace
86+
stage = var.stage
87+
name = var.name
88+
89+
ipv4_primary_cidr_block = "172.16.0.0/16"
90+
tags = local.tags
8891
}
8992
9093
module "subnets" {
91-
source = "git::https://github.com/cloudposse/terraform-aws-dynamic-subnets.git?ref=tags/0.16.0"
94+
source = "cloudposse/dynamic-subnets/aws"
95+
version = "2.4.1"
96+
97+
namespace = var.namespace
98+
stage = var.stage
99+
name = var.name
100+
92101
availability_zones = var.availability_zones
93-
namespace = var.namespace
94-
stage = var.stage
95-
name = var.name
96102
vpc_id = module.vpc.vpc_id
97-
igw_id = module.vpc.igw_id
98-
cidr_block = module.vpc.vpc_cidr_block
103+
igw_id = [module.vpc.igw_id]
104+
ipv4_cidr_block = [module.vpc.vpc_cidr_block]
99105
nat_gateway_enabled = false
100106
nat_instance_enabled = false
101107
tags = local.tags

docs/targets.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,10 @@
33
```text
44
Available targets:
55
6+
help Help screen
7+
help/all Display help for all targets
8+
help/short This help short screen
9+
lint Lint terraform code
10+
611
```
712
<!-- markdownlint-restore -->

docs/terraform.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
| Name | Source | Version |
1818
|------|--------|---------|
19-
| <a name="module_autoscale_group"></a> [autoscale\_group](#module\_autoscale\_group) | cloudposse/ec2-autoscale-group/aws | 0.30.1 |
19+
| <a name="module_autoscale_group"></a> [autoscale\_group](#module\_autoscale\_group) | cloudposse/ec2-autoscale-group/aws | 0.37.1 |
2020
| <a name="module_label"></a> [label](#module\_label) | cloudposse/label/null | 0.25.0 |
2121
| <a name="module_this"></a> [this](#module\_this) | cloudposse/label/null | 0.25.0 |
2222

examples/complete/main.tf

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,24 @@ locals {
1111

1212
module "vpc" {
1313
source = "cloudposse/vpc/aws"
14-
version = "1.1.0"
14+
version = "2.1.1"
1515

16-
cidr_block = "172.16.0.0/16"
17-
tags = local.tags
16+
ipv4_primary_cidr_block = "172.16.0.0/16"
17+
tags = local.tags
1818

1919
context = module.this.context
2020
}
2121

2222
module "subnets" {
2323
source = "cloudposse/dynamic-subnets/aws"
24-
version = "2.0.2"
24+
version = "2.4.1"
2525

2626
availability_zones = var.availability_zones
2727
vpc_id = module.vpc.vpc_id
2828
igw_id = [module.vpc.igw_id]
2929
ipv4_cidr_block = [module.vpc.vpc_cidr_block]
3030
nat_gateway_enabled = false
3131
nat_instance_enabled = false
32-
tags = local.tags
3332

3433
context = module.this.context
3534
}

main.tf

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ locals {
44
"kubernetes.io/cluster/${var.cluster_name}" = "owned"
55
}
66

7-
workers_role_arn = var.use_existing_aws_iam_instance_profile ? join("", data.aws_iam_instance_profile.default.*.role_arn) : join("", aws_iam_role.default.*.arn)
8-
workers_role_name = var.use_existing_aws_iam_instance_profile ? join("", data.aws_iam_instance_profile.default.*.role_name) : join("", aws_iam_role.default.*.name)
7+
workers_role_arn = var.use_existing_aws_iam_instance_profile ? join("", data.aws_iam_instance_profile.default[*].role_arn) : join("", aws_iam_role.default[*].arn)
8+
workers_role_name = var.use_existing_aws_iam_instance_profile ? join("", data.aws_iam_instance_profile.default[*].role_name) : join("", aws_iam_role.default[*].name)
99

1010
userdata = templatefile("${path.module}/userdata.tpl", {
1111
cluster_endpoint = var.cluster_endpoint
@@ -47,38 +47,38 @@ data "aws_iam_policy_document" "assume_role" {
4747
resource "aws_iam_role" "default" {
4848
count = local.enabled && var.use_existing_aws_iam_instance_profile == false ? 1 : 0
4949
name = module.label.id
50-
assume_role_policy = join("", data.aws_iam_policy_document.assume_role.*.json)
50+
assume_role_policy = join("", data.aws_iam_policy_document.assume_role[*].json)
5151
tags = module.label.tags
5252
}
5353

5454
resource "aws_iam_role_policy_attachment" "amazon_eks_worker_node_policy" {
5555
count = local.enabled && var.use_existing_aws_iam_instance_profile == false ? 1 : 0
5656
policy_arn = "arn:${data.aws_partition.current.partition}:iam::aws:policy/AmazonEKSWorkerNodePolicy"
57-
role = join("", aws_iam_role.default.*.name)
57+
role = join("", aws_iam_role.default[*].name)
5858
}
5959

6060
resource "aws_iam_role_policy_attachment" "amazon_eks_cni_policy" {
6161
count = local.enabled && var.use_existing_aws_iam_instance_profile == false ? 1 : 0
6262
policy_arn = "arn:${data.aws_partition.current.partition}:iam::aws:policy/AmazonEKS_CNI_Policy"
63-
role = join("", aws_iam_role.default.*.name)
63+
role = join("", aws_iam_role.default[*].name)
6464
}
6565

6666
resource "aws_iam_role_policy_attachment" "amazon_ec2_container_registry_read_only" {
6767
count = local.enabled && var.use_existing_aws_iam_instance_profile == false ? 1 : 0
6868
policy_arn = "arn:${data.aws_partition.current.partition}:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
69-
role = join("", aws_iam_role.default.*.name)
69+
role = join("", aws_iam_role.default[*].name)
7070
}
7171

7272
resource "aws_iam_role_policy_attachment" "existing_policies_attach_to_eks_workers_role" {
7373
count = local.enabled && var.use_existing_aws_iam_instance_profile == false ? var.workers_role_policy_arns_count : 0
7474
policy_arn = var.workers_role_policy_arns[count.index]
75-
role = join("", aws_iam_role.default.*.name)
75+
role = join("", aws_iam_role.default[*].name)
7676
}
7777

7878
resource "aws_iam_instance_profile" "default" {
7979
count = local.enabled && var.use_existing_aws_iam_instance_profile == false ? 1 : 0
8080
name = module.label.id
81-
role = join("", aws_iam_role.default.*.name)
81+
role = join("", aws_iam_role.default[*].name)
8282
}
8383

8484
resource "aws_security_group" "default" {
@@ -96,7 +96,7 @@ resource "aws_security_group_rule" "egress" {
9696
to_port = 0
9797
protocol = "-1"
9898
cidr_blocks = ["0.0.0.0/0"]
99-
security_group_id = join("", aws_security_group.default.*.id)
99+
security_group_id = join("", aws_security_group.default[*].id)
100100
type = "egress"
101101
}
102102

@@ -106,8 +106,8 @@ resource "aws_security_group_rule" "ingress_self" {
106106
from_port = 0
107107
to_port = 65535
108108
protocol = "-1"
109-
security_group_id = join("", aws_security_group.default.*.id)
110-
source_security_group_id = join("", aws_security_group.default.*.id)
109+
security_group_id = join("", aws_security_group.default[*].id)
110+
source_security_group_id = join("", aws_security_group.default[*].id)
111111
type = "ingress"
112112
}
113113

@@ -117,7 +117,7 @@ resource "aws_security_group_rule" "ingress_cluster" {
117117
from_port = 0
118118
to_port = 65535
119119
protocol = "-1"
120-
security_group_id = join("", aws_security_group.default.*.id)
120+
security_group_id = join("", aws_security_group.default[*].id)
121121
source_security_group_id = var.cluster_security_group_id
122122
type = "ingress"
123123
}
@@ -129,7 +129,7 @@ resource "aws_security_group_rule" "ingress_security_groups" {
129129
to_port = 65535
130130
protocol = "-1"
131131
source_security_group_id = var.allowed_security_groups[count.index]
132-
security_group_id = join("", aws_security_group.default.*.id)
132+
security_group_id = join("", aws_security_group.default[*].id)
133133
type = "ingress"
134134
}
135135

@@ -140,7 +140,7 @@ resource "aws_security_group_rule" "ingress_cidr_blocks" {
140140
to_port = 0
141141
protocol = "-1"
142142
cidr_blocks = var.allowed_cidr_blocks
143-
security_group_id = join("", aws_security_group.default.*.id)
143+
security_group_id = join("", aws_security_group.default[*].id)
144144
type = "ingress"
145145
}
146146

@@ -165,18 +165,18 @@ data "aws_iam_instance_profile" "default" {
165165

166166
module "autoscale_group" {
167167
source = "cloudposse/ec2-autoscale-group/aws"
168-
version = "0.30.1"
168+
version = "0.37.1"
169169

170170
enabled = local.enabled
171171
tags = merge(local.tags, var.autoscaling_group_tags)
172172

173-
image_id = var.use_custom_image_id ? var.image_id : join("", data.aws_ami.eks_worker.*.id)
174-
iam_instance_profile_name = var.use_existing_aws_iam_instance_profile == false ? join("", aws_iam_instance_profile.default.*.name) : var.aws_iam_instance_profile_name
173+
image_id = var.use_custom_image_id ? var.image_id : join("", data.aws_ami.eks_worker[*].id)
174+
iam_instance_profile_name = var.use_existing_aws_iam_instance_profile == false ? join("", aws_iam_instance_profile.default[*].name) : var.aws_iam_instance_profile_name
175175

176176
security_group_ids = compact(
177177
concat(
178178
[
179-
var.use_existing_security_group == false ? join("", aws_security_group.default.*.id) : var.workers_security_group_id
179+
var.use_existing_security_group == false ? join("", aws_security_group.default[*].id) : var.workers_security_group_id
180180
],
181181
var.additional_security_group_ids
182182
)

outputs.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,17 @@ output "autoscaling_group_health_check_type" {
6060

6161
output "security_group_id" {
6262
description = "ID of the worker nodes Security Group"
63-
value = join("", aws_security_group.default.*.id)
63+
value = join("", aws_security_group.default[*].id)
6464
}
6565

6666
output "security_group_arn" {
6767
description = "ARN of the worker nodes Security Group"
68-
value = join("", aws_security_group.default.*.arn)
68+
value = join("", aws_security_group.default[*].arn)
6969
}
7070

7171
output "security_group_name" {
7272
description = "Name of the worker nodes Security Group"
73-
value = join("", aws_security_group.default.*.name)
73+
value = join("", aws_security_group.default[*].name)
7474
}
7575

7676
output "workers_role_arn" {

0 commit comments

Comments
 (0)