Выбор ответа Middle Terraform и IaC спрашивают часто обновлено

count против for_each

Вопрос

Ресурсы созданы через count = length(var.names) для списка ["api", "web", "worker"]. Вы удалили "api" из списка. Что покажет план?

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

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

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

Коротко

Правильный ответ: Индексы сдвинутся: [0] и [1] изменятся, [2] удалится. С count адрес ресурса это индекс.

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

  1. Удалится только ресурс для "api", остальные не изменятся
  2. Ничего не изменится, пока не сделать terraform refresh
  3. План упадёт с ошибкой о несовпадении длины списка и state
  4. Индексы сдвинутся: [0] и [1] изменятся, [2] удалитсяправильный ответ

Разбор

С count адрес ресурса это индекс. После удаления первого элемента бывший web теперь [0], worker теперь [1], и Terraform захочет привести [0] и [1] к новым значениям, а [2] удалить. С for_each = toset(var.names) адреса будут ["web"], ["worker"], и удалится только ["api"].

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

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