Skip to content

Commit f4e291c

Browse files
committed
Fixing cert_arn override behaviour
1 parent 2699467 commit f4e291c

File tree

3 files changed

+15
-24
lines changed

3 files changed

+15
-24
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,8 @@ Setting `aws_r53_create_root_cert` to `true` will create this certificate with b
583583
584584
Setting `aws_r53_create_sub_cert` to `true` will create a certificate **just for the subdomain**, and validate it.
585585
586+
> :sparkles: Defining `aws_r53_cert_arn` with `aws_r53_enable_cert` set to `true` will use the provided cert as is. Ignoring creation, validation or maintenance of any other certificate.
587+
586588
> :warning: Be very careful here! **Created certificates are fully managed by Terraform**. Therefor **they will be destroyed upon stack destruction**.
587589
588590
To change a certificate (root_cert, sub_cert, ARN or pre-existing root cert), you must first set the `aws_r53_enable_cert` flag to false, run the action, then set the `aws_r53_enable_cert` flag to true, add the desired settings and excecute the action again. (**This will destroy the first certificate.**)

operations/deployment/terraform/aws/bitovi_main.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ module "efs_to_ec2_sg" {
6262

6363
module "aws_certificates" {
6464
source = "../modules/aws/certificates"
65-
count = ( var.aws_ec2_instance_create || var.aws_ecs_enable ) && var.aws_r53_enable && var.aws_r53_domain_name != "" ? 1 : 0
65+
count = ( var.aws_ec2_instance_create || var.aws_ecs_enable ) && var.aws_r53_enable && ( var.aws_r53_domain_name != "" || var.aws_r53_cert_arn != "" ) ? 1 : 0
6666
# Cert
6767
aws_r53_cert_arn = var.aws_r53_cert_arn
6868
aws_r53_create_root_cert = var.aws_r53_create_root_cert
@@ -90,7 +90,7 @@ module "aws_route53" {
9090
aws_elb_dns_name = try(module.aws_elb[0].aws_elb_dns_name,"")
9191
aws_elb_zone_id = try(module.aws_elb[0].aws_elb_zone_id,"")
9292
# Certs
93-
aws_certificates_selected_arn = var.aws_r53_enable_cert && var.aws_r53_domain_name != "" ? module.aws_certificates[0].selected_arn : ""
93+
aws_certificates_selected_arn = var.aws_r53_enable_cert && length(module.aws_certificates) > 0 ? module.aws_certificates[0].selected_arn : ""
9494
# Others
9595
fqdn_provided = local.fqdn_provided
9696

@@ -118,7 +118,7 @@ module "aws_elb" {
118118
aws_instance_server_id = module.ec2[0].aws_instance_server_id
119119
aws_elb_target_sg_id = module.ec2[0].aws_security_group_ec2_sg_id
120120
# Certs
121-
aws_certificates_selected_arn = var.aws_r53_enable_cert && var.aws_r53_domain_name != "" ? module.aws_certificates[0].selected_arn : ""
121+
aws_certificates_selected_arn = var.aws_r53_enable_cert && length(module.aws_certificates) > 0 ? module.aws_certificates[0].selected_arn : ""
122122
# Others
123123
aws_resource_identifier = var.aws_resource_identifier
124124
aws_resource_identifier_supershort = var.aws_resource_identifier_supershort
@@ -498,7 +498,7 @@ module "aws_ecs" {
498498
aws_selected_subnets = module.vpc.aws_selected_vpc_subnets
499499
# Others
500500
aws_certificate_enabled = var.aws_r53_enable_cert && length(module.aws_certificates) > 0 ? true : false
501-
aws_certificates_selected_arn = var.aws_r53_enable_cert && var.aws_r53_domain_name != "" ? module.aws_certificates[0].selected_arn : ""
501+
aws_certificates_selected_arn = var.aws_r53_enable_cert && length(module.aws_certificates) > 0 ? module.aws_certificates[0].selected_arn : ""
502502
aws_resource_identifier = var.aws_resource_identifier
503503
aws_resource_identifier_supershort = var.aws_resource_identifier_supershort
504504
app_repo_name = var.app_repo_name
@@ -521,7 +521,7 @@ module "aws_route53_ecs" {
521521
aws_elb_dns_name = try(module.aws_ecs[0].load_balancer_dns,"")
522522
aws_elb_zone_id = try(module.aws_ecs[0].load_balancer_zone_id,"")
523523
# Certs
524-
aws_certificates_selected_arn = var.aws_r53_enable_cert && var.aws_r53_domain_name != "" ? module.aws_certificates[0].selected_arn : ""
524+
aws_certificates_selected_arn = var.aws_r53_enable_cert && length(module.aws_certificates) > 0 ? module.aws_certificates[0].selected_arn : ""
525525
# Others
526526
fqdn_provided = local.fqdn_provided
527527
depends_on = [ module.aws_certificates,module.aws_ecs ]

operations/deployment/terraform/modules/aws/certificates/aws_certificates.tf

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# Lookup for main domain.
22
data "aws_route53_zone" "selected" {
3+
count = local.is_enabled_and_valid ? 1 : 0
34
name = "${var.aws_r53_domain_name}."
45
private_zone = false
56
}
67

78
data "aws_acm_certificate" "issued" {
8-
#count = local.is_enabled_and_valid ? (!var.aws_r53_create_root_cert ? (!var.aws_r53_create_sub_cert ? (var.fqdn_provided ? 1 : 0) : 0) : 0) :0
99
for_each = local.is_enabled_and_valid ? {
1010
"domain" : var.aws_r53_domain_name,
1111
"wildcard" : "*.${var.aws_r53_domain_name}"
@@ -28,7 +28,7 @@ resource "aws_route53_record" "root_domain" {
2828
name = tolist(aws_acm_certificate.root_domain[0].domain_validation_options)[0].resource_record_name
2929
records = [tolist(aws_acm_certificate.root_domain[0].domain_validation_options)[0].resource_record_value]
3030
type = tolist(aws_acm_certificate.root_domain[0].domain_validation_options)[0].resource_record_type
31-
zone_id = data.aws_route53_zone.selected.zone_id
31+
zone_id = data.aws_route53_zone.selected[0].zone_id
3232
ttl = 60
3333
}
3434

@@ -52,7 +52,7 @@ resource "aws_route53_record" "sub_domain" {
5252
name = tolist(aws_acm_certificate.sub_domain[0].domain_validation_options)[0].resource_record_name
5353
records = [tolist(aws_acm_certificate.sub_domain[0].domain_validation_options)[0].resource_record_value]
5454
type = tolist(aws_acm_certificate.sub_domain[0].domain_validation_options)[0].resource_record_type
55-
zone_id = data.aws_route53_zone.selected.zone_id
55+
zone_id = data.aws_route53_zone.selected[0].zone_id
5656
ttl = 60
5757
}
5858

@@ -63,28 +63,17 @@ resource "aws_acm_certificate_validation" "sub_domain" {
6363
}
6464

6565
locals {
66-
is_enabled_and_valid = var.aws_r53_domain_name != "" ? true : false
66+
is_enabled_and_valid = var.aws_r53_cert_arn != "" ? false : var.aws_r53_domain_name != "" ? true : false
6767
selected_arn = (
68-
local.is_enabled_and_valid ?
69-
(var.aws_r53_cert_arn != "" ? var.aws_r53_cert_arn :
68+
var.aws_r53_cert_arn != "" ? var.aws_r53_cert_arn :
69+
(local.is_enabled_and_valid ?
7070
(!var.aws_r53_create_root_cert ?
7171
(!var.aws_r53_create_sub_cert ?
7272
(var.fqdn_provided ? local.acm_arn : "")
7373
: aws_acm_certificate.sub_domain[0].arn
7474
) : aws_acm_certificate.root_domain[0].arn
75-
)
76-
) : ""
77-
)
78-
cert_available = (
79-
local.is_enabled_and_valid ?
80-
(var.aws_r53_cert_arn != "" ? true :
81-
(!var.aws_r53_create_root_cert ?
82-
(!var.aws_r53_create_sub_cert ?
83-
(var.fqdn_provided ? true : false)
84-
: true
85-
) : true
86-
)
87-
) : false
75+
) : ""
76+
)
8877
)
8978
acm_arn = try(data.aws_acm_certificate.issued["domain"].arn, try(data.aws_acm_certificate.issued["wildcard"].arn, data.aws_acm_certificate.issued["sub"].arn, ""))
9079
}

0 commit comments

Comments
 (0)