Хотел поделиться с вами методикой работы с
(forced new resource), (new resource required) и прочего. Вот, например, самая банальная штука - это динамически вытягивать последнюю AMI из AWS для создания EC2. И сразу же получаем: при обновлении AMI (почти каждый день)- (forced new resource) - потому что AMI изменился, и нужно (нет) пересоздать.
Что делать:
lifecycle {
ignore_changes = ["ami"]
}Тут как бы все понятно - если меняется переменная ami - все ок, ничего делать не нужно. Подобная штука будет прокатывать с большинством ресурсов.
Недавно обновился MySQL Terraform provider - и появились нужные нам штуки. Но вот, проблема - при апгрейде Terraform маркает большинство ресурсов на пересоздание.
Я пробовал сюда вставить пример кода - но Telegram ломает форматирование.
Опишу словами: tls_option - была пустая строка, а теперь - будет NONE. Это произошло потому, что раньше эта опция не была реализована в модуле, а сейчас появилась. Окей, как сохранить обратную совместимость?
Втулить ему то, что было раньше:
tls_option = ""
Более подробно с кусками кода я описал тут:
https://github.com/terraform-providers/terraform-provider-mysql/issues/55#issuecomment-461610419
Вроде банальные вещи, но часто вижу, что много кто не знает.
Good luck!