Я играл с провайдером terraform aws для создания управляемых сервисов, таких как Amazon MQ. Я обнаружил, что в целом это работает хорошо, но при тестировании изменения минорной версии (5.15.9 -> 5.15.10) это деструктивный процесс, который может привести к потере данных, если это выполняется на работающем сервисе.
Я прочитал документацию для провайдера и не выполнил никаких дополнительных настроек, которые позволили бы этому произойти, не разрушая и не воссоздавая посредников. Единственный вариант, который я мог видеть, - это вручную обновлять через AWS напрямую или разрешать незначительные обновления автоматически.
Есть ли какие-либо отзывы, если это можно сделать через Terraform? В противном случае я мог бы предположить, что лучшим процессом может быть какой-то автоматизированный или ручной конвейер, использующий CLI AWS для выполнения обновлений, но тогда состояние terraform будет устаревшим, я бы предположил.
Редактировать:
См. Ниже приведено описание terraform для создания посредника. Я удалил содержимое, относящееся к секретному менеджеру, группам безопасности, подсетям и т. д. c, так как казалось, что оно добавляет объем и не связано непосредственно с проблемой.
resource "aws_mq_broker" "broker" {
broker_name = "${var.env}_${var.team}_broker"
engine_type = "ActiveMQ"
engine_version = "5.15.9"
deployment_mode = "${lookup(var.team_env_config, "${var.env}_${var.team}_deployment_mode")}"
host_instance_type = "${lookup(var.team_env_config, "${var.env}_${var.team}_instance_type")}"
auto_minor_version_upgrade = false
}
При тестировании Обновление, которое я только что изменил 5.15.9 -> 5.15.10
Вывод выглядит следующим образом:
deployment_mode: "SINGLE_INSTANCE" => "SINGLE_INSTANCE"
engine_type: "ActiveMQ" => "ActiveMQ"
engine_version: "5.15.9" => "5.15.10" (forces new resource)
Это просто отрыв, но, как вы можете видеть, изменение версии двигателя вызывает новый ресурс.