Terraform настаивает на смене сертификата ACM

У меня есть установка 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.


66
1

Ответ:

Решено

Мне удалось решить эту проблему, я считаю, что есть две вещи:

  1. Обновление Терраформа. Я использовал 1.5.7 и обновился до 1.8.5.
  2. Следуя этой теме: Terraform принудительно заменяет «aws_acm_certificate» на несколько «subject_alternative_names»

Это не обязательно желаемое поведение, но теперь, когда я запускаю 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.