Выбор ответа Middle Terraform и IaC обновлено

Переименовать ресурс без пересоздания

Вопрос

Вы переименовали resource "aws_instance" "web" в "frontend". План предлагает удалить старый и создать новый. Как избежать пересоздания?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Добавить блок moved со старым и новым адресом. moved сообщает Terraform, что объект тот же, сменился только адрес, и state обновится без изменений в облаке.

Варианты ответа

  1. Добавить lifecycle { prevent_destroy = true } к ресурсу
  2. Добавить блок moved со старым и новым адресомправильный ответ
  3. Выполнить terraform refresh, чтобы обновить адрес в state
  4. Удалить .terraform.lock.hcl и заново выполнить init

Разбор

moved сообщает Terraform, что объект тот же, сменился только адрес, и state обновится без изменений в облаке. Раньше то же делали командой terraform state mv, но блок проходит ревью вместе с кодом. prevent_destroy просто заставит план упасть, refresh обновляет атрибуты, а lock-файл хранит версии провайдеров.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.