Skip to content

Commit

Permalink
fix: Fixed example (for_each magic) (#1)
Browse files Browse the repository at this point in the history
* fix: Fixed example (for_each magic)

* Copied pre-commit.yml GH Actions config
  • Loading branch information
antonbabenko authored Jun 13, 2022
1 parent 49b7a74 commit 3e70604
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 42 deletions.
13 changes: 7 additions & 6 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:

- name: Get root directories
id: dirs
uses: clowdhaus/terraform-composite-actions/directories@v1.4.0
uses: clowdhaus/terraform-composite-actions/directories@v1.3.0

preCommitMinVersions:
name: Min TF pre-commit
Expand All @@ -36,22 +36,22 @@ jobs:

- name: Terraform min/max versions
id: minMax
uses: clowdhaus/[email protected].4
uses: clowdhaus/[email protected].3
with:
directory: ${{ matrix.directory }}

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

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

- name: Terraform min/max versions
id: minMax
uses: clowdhaus/[email protected].4
uses: clowdhaus/[email protected].3

- name: Pre-commit Terraform ${{ steps.minMax.outputs.maxVersion }}
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.4.0
uses: clowdhaus/terraform-composite-actions/pre-commit@v1.5.0
with:
terraform-version: ${{ steps.minMax.outputs.maxVersion }}
terraform-docs-version: ${{ env.TERRAFORM_DOCS_VERSION }}
install-hcledit: true
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.62.3
rev: v1.72.1
hooks:
- id: terraform_fmt
- id: terraform_validate
Expand All @@ -23,7 +23,7 @@ repos:
- '--args=--only=terraform_standard_module_structure'
- '--args=--only=terraform_workspace_remote'
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.1.0
rev: v4.3.0
hooks:
- id: check-merge-conflict
- id: end-of-file-fixer
17 changes: 0 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,6 @@

Terraform module which creates AWS Global Accelerator resources.

#### ℹ️ `Error: Invalid for_each argument ...`

Users may encounter the following error when using this module:

```
Error: Invalid for_each argument - The "for_each" value depends on resource attributes that
cannot be determined until apply, so Terraform cannot predict how many instances will be
created. To work around this, use the -target argument to first apply ...
```

This error is due to an upstream issue with [Terraform core](https://github.com/hashicorp/terraform/issues/4149).

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:

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
2. Create the dependent resources elsewhere prior to referencing in the module defintion

## Usage

See [`examples`](https://github.com/clowdhaus/terraform-aws-global-accelerator/tree/main/examples) directory for working examples to reference:
Expand Down
5 changes: 2 additions & 3 deletions examples/complete/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ To run this example you need to execute:
```bash
$ terraform init
$ terraform plan
$ terraform apply --target module.vpc --target module.alb # In order to reference ALB ARN as a target endpoint
$ terraform apply
```

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

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

## Resources
Expand Down
22 changes: 9 additions & 13 deletions examples/complete/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,12 @@ module "vpc" {
azs = ["${local.region}a", "${local.region}b", "${local.region}c"]
public_subnets = ["10.99.0.0/24", "10.99.1.0/24", "10.99.2.0/24"]

enable_nat_gateway = false
single_nat_gateway = true
map_public_ip_on_launch = false

tags = local.tags
}

module "alb" {
source = "terraform-aws-modules/alb/aws"
version = "~> 6.0"
version = "~> 7.0"

name = local.name
load_balancer_type = "application"
Expand All @@ -64,7 +60,7 @@ module "alb" {

module "s3_log_bucket" {
source = "terraform-aws-modules/s3-bucket/aws"
version = "~> 2.0"
version = "~> 3.0"

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

################################################################################
# Global Acclerator Module
# Global Accelerator Module
################################################################################

module "global_accelerator_disabled" {
Expand Down Expand Up @@ -183,15 +179,15 @@ module "global_accelerator" {
}

listeners_timeouts = {
create = 35
update = 35
delete = 35
create = "35m"
update = "35m"
delete = "35m"
}

endpoint_groups_timeouts = {
create = 35
update = 35
delete = 35
create = "35m"
update = "35m"
delete = "35m"
}

tags = local.tags
Expand Down
2 changes: 1 addition & 1 deletion main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ resource "aws_globalaccelerator_listener" "this" {
################################################################################

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

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

Expand Down

0 comments on commit 3e70604

Please sign in to comment.