Skip to content

Commit e554cae

Browse files
author
rahul-infra
committed
feat : Given provision for acm module such it can have hostedzone in same account or different account.
1 parent 4727f2e commit e554cae

File tree

5 files changed

+89
-5
lines changed

5 files changed

+89
-5
lines changed

main.tf

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,33 @@ resource "aws_ecs_task_definition" "this" {
243243
################################################################################
244244
# Amazon Certificates Manager Sub-module
245245
################################################################################
246+
provider "aws" {
247+
region = var.region
248+
}
249+
250+
# Cross-account provider for Route53
251+
provider "aws" {
252+
alias = "dns"
253+
region = var.region
254+
255+
dynamic "assume_role" {
256+
for_each = var.route53_assume_role_arn != null ? [1] : []
257+
content {
258+
role_arn = var.route53_assume_role_arn
259+
}
260+
}
261+
}
246262

247263
module "acm" {
248264
source = "./modules/acm"
249265

266+
providers = {
267+
aws = aws
268+
aws.dns = aws.dns
269+
}
270+
route53_assume_role_arn = var.route53_assume_role_arn
271+
region = var.region
272+
250273
for_each = var.create_acm ? var.acm_certificates : {}
251274

252275
# ACM Certificate

modules/acm/main.tf

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ locals {
77
}
88
}
99

10+
terraform {
11+
required_providers {
12+
aws = {
13+
source = "hashicorp/aws"
14+
configuration_aliases = [aws.dns]
15+
}
16+
}
17+
}
18+
19+
20+
1021
################################################################################
1122
# ACM Certificate
1223
################################################################################
@@ -37,7 +48,22 @@ resource "aws_acm_certificate" "this" {
3748
# ACM Validation
3849
################################################################################
3950

40-
resource "aws_route53_record" "this" {
51+
resource "aws_route53_record" "same_account" {
52+
count = var.route53_assume_role_arn == null ? 1 : 0
53+
54+
zone_id = var.record_zone_id
55+
name = local.acm_certificate_validation_record.name
56+
type = local.acm_certificate_validation_record.type
57+
records = [local.acm_certificate_validation_record.value]
58+
ttl = 60
59+
allow_overwrite = var.record_allow_overwrite
60+
}
61+
62+
resource "aws_route53_record" "cross_account" {
63+
count = var.route53_assume_role_arn != null ? 1 : 0
64+
provider = aws.dns
65+
66+
4167
zone_id = var.record_zone_id
4268
name = local.acm_certificate_validation_record.name
4369
type = local.acm_certificate_validation_record.type
@@ -47,6 +73,11 @@ resource "aws_route53_record" "this" {
4773
}
4874

4975
resource "aws_acm_certificate_validation" "this" {
50-
certificate_arn = aws_acm_certificate.this.arn
51-
validation_record_fqdns = [aws_route53_record.this.fqdn]
76+
certificate_arn = aws_acm_certificate.this.arn
77+
78+
validation_record_fqdns = [
79+
var.route53_assume_role_arn == null ?
80+
aws_route53_record.same_account[0].fqdn :
81+
aws_route53_record.cross_account[0].fqdn
82+
]
5283
}

modules/acm/outputs.tf

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ output "acm_certificate_arn" {
1717
################################################################################
1818

1919
output "route53_record_id" {
20-
description = "Identifier of the Route53 Record for validation of the ACM certificate."
21-
value = aws_route53_record.this.id
20+
description = "Identifier of the Route53 Record (supports same & cross-account)."
21+
value = (
22+
var.route53_assume_role_arn == null
23+
? aws_route53_record.same_account[0].id
24+
: aws_route53_record.cross_account[0].id
25+
)
2226
}
2327

28+
2429
################################################################################
2530
# ACM Certificate Validation
2631
################################################################################

modules/acm/variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,15 @@ variable "record_allow_overwrite" {
6060
nullable = false
6161
default = true
6262
}
63+
64+
variable "region" {
65+
type = string
66+
default = null
67+
description = "(Optional) Region to create ACM certificate in"
68+
}
69+
70+
variable "route53_assume_role_arn" {
71+
type = string
72+
default = null
73+
description = "(Optional) IAM role ARN to assume for Route53 operations"
74+
}

variables.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,16 @@ variable "acm_certificates" {
199199
nullable = false
200200
default = {}
201201
}
202+
203+
variable "region" {
204+
description = "(Optional) AWS region to create resources in."
205+
type = string
206+
default = null
207+
}
208+
209+
variable "route53_assume_role_arn" {
210+
description = "(Optional) ARN of the role to assume for Route53 operations."
211+
type = string
212+
default = null
213+
}
214+

0 commit comments

Comments
 (0)