У меня есть установка Terraform, которая предоставляет необходимые ресурсы для обслуживания веб-сервера, размещенного на AWS.
Когда я ничего не меняю локально в файлах .tf и просто ввожу Terraform Plan
, Terraform настаивает на изменении сертификата SSL:
Terraform used the selected providers to generate the following
execution plan. Resource actions are indicated with the following
symbols:
~ update in-place
Terraform will perform the following actions:
# aws_acm_certificate.resume-app-cert will be updated in-place
~ resource "aws_acm_certificate" "resume-app-cert" {
id = "arn:aws:acm:us-east-1:**redacted**"
tags = {
"Name" = "resume-app-ssl-cert"
}
# (15 unchanged attributes hidden)
# (1 unchanged block hidden)
}
Plan: 0 to add, 1 to change, 0 to destroy.
Файл ACM.tf выглядит следующим образом:
resource "aws_acm_certificate" "resume-app-cert" {
domain_name = var.domain_name
validation_method = "DNS"
subject_alternative_names = [var.wildcard_domain_name]
tags = {
Name = var.aws_certificate_name
}
}
resource "aws_acm_certificate_validation" "resume-app-cert" {
certificate_arn = aws_acm_certificate.resume-app-cert.arn
validation_record_fqdns = [for record in aws_route53_record.cname-validation : record.fqdn]
}
Переменные содержат следующие значения:
var.domain_name = redacted.com
var.wildcard_domain_name = *.redacted.com
Я видел пару сообщений в Stack и разных местах, предлагающих исправление, но мне кажется, что это исправление уже реализовано в моей конфигурации, а точнее, что SAN не должен включать имя корневого домена, например:
subject_alternative_names = [var.domain_name, var.wildcard_domain_name]
Вот ссылка на предполагаемое исправление, которое, похоже, у меня не работает: Terraform принудительно заменяет «aws_acm_certificate» на несколько «subject_alternative_names»
По сути, я ожидаю, что запуск Terraform Plan
без каких-либо изменений не будет пытаться заменить сертификат SSL.
Мне удалось решить эту проблему, я считаю, что есть две вещи:
Это не обязательно желаемое поведение, но теперь, когда я запускаю tf plan
, я получаю:
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.