From f3aa8b02ace8be4b5f67ff99f1ebd497a95ba6b1 Mon Sep 17 00:00:00 2001 From: dannyibishev Date: Tue, 10 May 2022 11:39:07 +0100 Subject: [PATCH 1/3] feat!: Add provider support to ACM and R53 resources BREAKING CHANGE --- main.tf | 9 ++++++--- provider.tf | 7 +++++++ versions.tf | 5 +++-- 3 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 provider.tf diff --git a/main.tf b/main.tf index 07fd069..d384dc9 100644 --- a/main.tf +++ b/main.tf @@ -16,7 +16,8 @@ locals { } resource "aws_acm_certificate" "this" { - count = local.create_certificate ? 1 : 0 + provider = aws.acm + count = local.create_certificate ? 1 : 0 domain_name = var.domain_name subject_alternative_names = var.subject_alternative_names @@ -34,7 +35,8 @@ resource "aws_acm_certificate" "this" { } resource "aws_route53_record" "validation" { - count = local.create_certificate && var.validation_method == "DNS" && var.create_route53_records && var.validate_certificate ? length(local.distinct_domain_names) : 0 + provider = aws.dns + count = local.create_certificate && var.validation_method == "DNS" && var.create_route53_records && var.validate_certificate ? length(local.distinct_domain_names) : 0 zone_id = var.zone_id name = element(local.validation_domains, count.index)["resource_record_name"] @@ -51,7 +53,8 @@ resource "aws_route53_record" "validation" { } resource "aws_acm_certificate_validation" "this" { - count = local.create_certificate && var.validation_method != "NONE" && var.validate_certificate && var.wait_for_validation ? 1 : 0 + provider = aws.acm + count = local.create_certificate && var.validation_method != "NONE" && var.validate_certificate && var.wait_for_validation ? 1 : 0 certificate_arn = aws_acm_certificate.this[0].arn diff --git a/provider.tf b/provider.tf new file mode 100644 index 0000000..e479a76 --- /dev/null +++ b/provider.tf @@ -0,0 +1,7 @@ +provider "aws" { + alias = "acm" +} + +provider "aws" { + alias = "dns" +} diff --git a/versions.tf b/versions.tf index 25f85e5..d4a4d8f 100644 --- a/versions.tf +++ b/versions.tf @@ -3,8 +3,9 @@ terraform { required_providers { aws = { - source = "hashicorp/aws" - version = ">= 2.53" + source = "hashicorp/aws" + version = ">= 2.53" + configuration_aliases = [aws.acm, aws.dns] } } } From 632029f89ebfc9de05bedc80106a7a7fcbf288c2 Mon Sep 17 00:00:00 2001 From: dannyibishev Date: Tue, 10 May 2022 12:41:33 +0100 Subject: [PATCH 2/3] docs: Update examples and README add changes made from the pre-commit and the recommended PR guidelines --- README.md | 21 +++++++++++++++++-- .../main.tf | 5 +++++ examples/complete-dns-validation/main.tf | 5 +++++ examples/complete-email-validation/main.tf | 5 +++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b653162..a185a32 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,11 @@ module "acm" { source = "terraform-aws-modules/acm/aws" version = "~> 3.0" + providers = { + aws.acm = aws, + aws.dns = aws + } + domain_name = "my-domain.com" zone_id = "Z2ES7B9AZ6SHAE" @@ -34,6 +39,11 @@ module "acm" { source = "terraform-aws-modules/acm/aws" version = "~> 3.0" + providers = { + aws.acm = aws, + aws.dns = aws + } + domain_name = "weekly.tf" zone_id = "b7d259641bf30b89887c943ffc9d2138" @@ -66,7 +76,8 @@ module "acm" { source = "terraform-aws-modules/acm/aws" providers = { - aws = aws.us-east-1 + aws.acm = aws.us-east-1, + aws.dns = aws } domain_name = "my-domain.com" @@ -95,6 +106,11 @@ Sometimes you need to have a way to create ACM certificate conditionally but Ter module "acm" { source = "terraform-aws-modules/acm/aws" + providers = { + aws.acm = aws, + aws.dns = aws + } + create_certificate = false # ... omitted } @@ -128,7 +144,8 @@ module "acm" { | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 2.53 | +| [aws.acm](#provider\_aws.acm) | >= 2.53 | +| [aws.dns](#provider\_aws.dns) | >= 2.53 | ## Modules diff --git a/examples/complete-dns-validation-with-cloudflare/main.tf b/examples/complete-dns-validation-with-cloudflare/main.tf index f99a154..73983d4 100644 --- a/examples/complete-dns-validation-with-cloudflare/main.tf +++ b/examples/complete-dns-validation-with-cloudflare/main.tf @@ -8,6 +8,11 @@ locals { module "acm" { source = "../../" + providers = { + aws.acm = aws, + aws.dns = aws + } + domain_name = local.domain_name zone_id = data.cloudflare_zone.this.id diff --git a/examples/complete-dns-validation/main.tf b/examples/complete-dns-validation/main.tf index 058a6b2..54a6569 100644 --- a/examples/complete-dns-validation/main.tf +++ b/examples/complete-dns-validation/main.tf @@ -23,6 +23,11 @@ resource "aws_route53_zone" "this" { module "acm" { source = "../../" + providers = { + aws.acm = aws, + aws.dns = aws + } + domain_name = local.domain_name zone_id = coalescelist(data.aws_route53_zone.this.*.zone_id, aws_route53_zone.this.*.zone_id)[0] diff --git a/examples/complete-email-validation/main.tf b/examples/complete-email-validation/main.tf index ce4b1ec..006d442 100644 --- a/examples/complete-email-validation/main.tf +++ b/examples/complete-email-validation/main.tf @@ -5,6 +5,11 @@ resource "aws_route53_zone" "this" { module "acm" { source = "../../" + providers = { + aws.acm = aws, + aws.dns = aws + } + domain_name = var.domain_name zone_id = aws_route53_zone.this.zone_id From 361c671ef7f716da14b4f5f64cf910ec6b263111 Mon Sep 17 00:00:00 2001 From: dannyibishev Date: Thu, 19 May 2022 09:43:07 +0100 Subject: [PATCH 3/3] delete provider block the coniguration_aliases is enough to make this work without the default provider blocks --- provider.tf | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 provider.tf diff --git a/provider.tf b/provider.tf deleted file mode 100644 index e479a76..0000000 --- a/provider.tf +++ /dev/null @@ -1,7 +0,0 @@ -provider "aws" { - alias = "acm" -} - -provider "aws" { - alias = "dns" -}