Выбор ответа Middle Terraform и IaC обновлено
Переименовать ресурс без пересоздания
Вопрос
Вы переименовали resource "aws_instance" "web" в "frontend". План предлагает удалить старый и создать новый. Как избежать пересоздания?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Добавить блок moved со старым и новым адресом. moved сообщает Terraform, что объект тот же, сменился только адрес, и state обновится без изменений в облаке.
Варианты ответа
- Добавить
lifecycle { prevent_destroy = true }к ресурсу - Добавить блок
movedсо старым и новым адресомправильный ответ - Выполнить
terraform refresh, чтобы обновить адрес в state - Удалить
.terraform.lock.hclи заново выполнитьinit
Разбор
moved сообщает Terraform, что объект тот же, сменился только адрес, и state обновится без изменений в облаке. Раньше то же делали командой terraform state mv, но блок проходит ревью вместе с кодом. prevent_destroy просто заставит план упасть, refresh обновляет атрибуты, а lock-файл хранит версии провайдеров.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.