Skip to content

Commit 3e70604

Browse files
authored
fix: Fixed example (for_each magic) (#1)
* fix: Fixed example (for_each magic) * Copied pre-commit.yml GH Actions config
1 parent 49b7a74 commit 3e70604

File tree

6 files changed

+21
-42
lines changed

6 files changed

+21
-42
lines changed

.github/workflows/pre-commit.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121

2222
- name: Get root directories
2323
id: dirs
24-
uses: clowdhaus/terraform-composite-actions/directories@v1.4.0
24+
uses: clowdhaus/terraform-composite-actions/directories@v1.3.0
2525

2626
preCommitMinVersions:
2727
name: Min TF pre-commit
@@ -36,22 +36,22 @@ jobs:
3636

3737
- name: Terraform min/max versions
3838
id: minMax
39-
uses: clowdhaus/[email protected].4
39+
uses: clowdhaus/[email protected].3
4040
with:
4141
directory: ${{ matrix.directory }}
4242

4343
- name: Pre-commit Terraform ${{ steps.minMax.outputs.minVersion }}
4444
# Run only validate pre-commit check on min version supported
4545
if: ${{ matrix.directory != '.' }}
46-
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.4.0
46+
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.3.0
4747
with:
4848
terraform-version: ${{ steps.minMax.outputs.minVersion }}
4949
args: 'terraform_validate --color=always --show-diff-on-failure --files ${{ matrix.directory }}/*'
5050

5151
- name: Pre-commit Terraform ${{ steps.minMax.outputs.minVersion }}
5252
# Run only validate pre-commit check on min version supported
5353
if: ${{ matrix.directory == '.' }}
54-
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.4.0
54+
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.3.0
5555
with:
5656
terraform-version: ${{ steps.minMax.outputs.minVersion }}
5757
args: 'terraform_validate --color=always --show-diff-on-failure --files $(ls *.tf)'
@@ -69,10 +69,11 @@ jobs:
6969

7070
- name: Terraform min/max versions
7171
id: minMax
72-
uses: clowdhaus/[email protected].4
72+
uses: clowdhaus/[email protected].3
7373

7474
- name: Pre-commit Terraform ${{ steps.minMax.outputs.maxVersion }}
75-
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.4.0
75+
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.5.0
7676
with:
7777
terraform-version: ${{ steps.minMax.outputs.maxVersion }}
7878
terraform-docs-version: ${{ env.TERRAFORM_DOCS_VERSION }}
79+
install-hcledit: true

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/antonbabenko/pre-commit-terraform
3-
rev: v1.62.3
3+
rev: v1.72.1
44
hooks:
55
- id: terraform_fmt
66
- id: terraform_validate
@@ -23,7 +23,7 @@ repos:
2323
- '--args=--only=terraform_standard_module_structure'
2424
- '--args=--only=terraform_workspace_remote'
2525
- repo: https://github.com/pre-commit/pre-commit-hooks
26-
rev: v4.1.0
26+
rev: v4.3.0
2727
hooks:
2828
- id: check-merge-conflict
2929
- id: end-of-file-fixer

README.md

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,6 @@
22

33
Terraform module which creates AWS Global Accelerator resources.
44

5-
#### ℹ️ `Error: Invalid for_each argument ...`
6-
7-
Users may encounter the following error when using this module:
8-
9-
```
10-
Error: Invalid for_each argument - The "for_each" value depends on resource attributes that
11-
cannot be determined until apply, so Terraform cannot predict how many instances will be
12-
created. To work around this, use the -target argument to first apply ...
13-
```
14-
15-
This error is due to an upstream issue with [Terraform core](https://github.com/hashicorp/terraform/issues/4149).
16-
17-
The Terraform resource passed into the modules map definition (specifically, endpoint targets) _must_ be known before you can plan or apply the module. To help mitigate this issue, you can do one of the following:
18-
19-
1. Create the dependent resources before the accelerator => `terraform apply -target <your load balancer endpoints or ec2 instances>` and then `terraform apply` to create the accelerator and associated resources
20-
2. Create the dependent resources elsewhere prior to referencing in the module defintion
21-
225
## Usage
236

247
See [`examples`](https://github.com/clowdhaus/terraform-aws-global-accelerator/tree/main/examples) directory for working examples to reference:

examples/complete/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ To run this example you need to execute:
1313
```bash
1414
$ terraform init
1515
$ terraform plan
16-
$ terraform apply --target module.vpc --target module.alb # In order to reference ALB ARN as a target endpoint
1716
$ terraform apply
1817
```
1918

@@ -37,10 +36,10 @@ Note that this example may create resources which will incur monetary charges on
3736

3837
| Name | Source | Version |
3938
|------|--------|---------|
40-
| <a name="module_alb"></a> [alb](#module\_alb) | terraform-aws-modules/alb/aws | ~> 6.0 |
39+
| <a name="module_alb"></a> [alb](#module\_alb) | terraform-aws-modules/alb/aws | ~> 7.0 |
4140
| <a name="module_global_accelerator"></a> [global\_accelerator](#module\_global\_accelerator) | ../.. | n/a |
4241
| <a name="module_global_accelerator_disabled"></a> [global\_accelerator\_disabled](#module\_global\_accelerator\_disabled) | ../.. | n/a |
43-
| <a name="module_s3_log_bucket"></a> [s3\_log\_bucket](#module\_s3\_log\_bucket) | terraform-aws-modules/s3-bucket/aws | ~> 2.0 |
42+
| <a name="module_s3_log_bucket"></a> [s3\_log\_bucket](#module\_s3\_log\_bucket) | terraform-aws-modules/s3-bucket/aws | ~> 3.0 |
4443
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 3.0 |
4544

4645
## Resources

examples/complete/main.tf

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,12 @@ module "vpc" {
2929
azs = ["${local.region}a", "${local.region}b", "${local.region}c"]
3030
public_subnets = ["10.99.0.0/24", "10.99.1.0/24", "10.99.2.0/24"]
3131

32-
enable_nat_gateway = false
33-
single_nat_gateway = true
34-
map_public_ip_on_launch = false
35-
3632
tags = local.tags
3733
}
3834

3935
module "alb" {
4036
source = "terraform-aws-modules/alb/aws"
41-
version = "~> 6.0"
37+
version = "~> 7.0"
4238

4339
name = local.name
4440
load_balancer_type = "application"
@@ -64,7 +60,7 @@ module "alb" {
6460

6561
module "s3_log_bucket" {
6662
source = "terraform-aws-modules/s3-bucket/aws"
67-
version = "~> 2.0"
63+
version = "~> 3.0"
6864

6965
bucket = "${local.name}-flowlogs-${data.aws_caller_identity.current.account_id}-${local.region}"
7066
acl = "log-delivery-write"
@@ -87,7 +83,7 @@ module "s3_log_bucket" {
8783
}
8884

8985
################################################################################
90-
# Global Acclerator Module
86+
# Global Accelerator Module
9187
################################################################################
9288

9389
module "global_accelerator_disabled" {
@@ -183,15 +179,15 @@ module "global_accelerator" {
183179
}
184180

185181
listeners_timeouts = {
186-
create = 35
187-
update = 35
188-
delete = 35
182+
create = "35m"
183+
update = "35m"
184+
delete = "35m"
189185
}
190186

191187
endpoint_groups_timeouts = {
192-
create = 35
193-
update = 35
194-
delete = 35
188+
create = "35m"
189+
update = "35m"
190+
delete = "35m"
195191
}
196192

197193
tags = local.tags

main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ resource "aws_globalaccelerator_listener" "this" {
5252
################################################################################
5353

5454
resource "aws_globalaccelerator_endpoint_group" "this" {
55-
for_each = { for k, v in var.listeners : k => v if var.create && var.create_listeners && can(var.listeners[k].endpoint_group) }
55+
for_each = { for k, v in var.listeners : k => v if var.create && var.create_listeners && length(lookup(var.listeners[k], "endpoint_group", {})) >= 0 }
5656

5757
listener_arn = aws_globalaccelerator_listener.this[each.key].id
5858

0 commit comments

Comments
 (0)