Terraform уничтожает ресурс AWS при перемещении кода в модуль

Изначально у меня был скрипт Terraform, который создает группу логов CloudWatch.

resource "aws_cloudwatch_log_group" "main_server_log_group" {
  name              = "server_name"
  retention_in_days = 60
}

Я применил его, позже переместил в специальный модуль и переименовал

resource "aws_cloudwatch_log_group" "server_log_group" {
  name              = "${var.server_name}"
  retention_in_days = 60
}

и используя этот модуль в main.tf

module "main_server" {
  source = "./modules/server"
  server_name = "${local.main_server_name}"
}

Теперь приложение Terrafrom уничтожает исходную группу CloudWatch и создает новую.

module.main_server.aws_cloudwatch_log_group.main_server_log_group[0]: Creating...
aws_cloudwatch_log_group.main_server_log_group: Destroying... [id=xxxx]

Я предполагаю, что это потому, что изменилось название ресурса Terraform, не так ли? Этого не ожидалось. Название группы CW не изменилось.

Есть ли обходной путь для сохранения существующих ресурсов при рефакторинге кода Terraform?


person dannikoti    schedule 08.12.2019    source источник


Ответы (1)


Нашел решение, видимо можно перенести ресурс в модуль. Файл состояния требует обновления - https://www.terraform.io/docs/commands/state/mv.html

Обновить состояние перемещения у меня не работало. Но удаление состояния и состояние импорта сделали свое дело.

terraform state rm 'my_resource'
terraform import ...
person dannikoti    schedule 08.12.2019