Когда используется обновление terraform?

В настоящее время я изучаю терраформирование и натыкаюсь на команду terraform refresh. Кажется, он синхронизирует файл terraform.tfstate с изменениями, которые я сделал вручную (я пытался изменить тип экземпляра EC2). Я обнаружил, что terraform plan может идентифицировать дрейф между текущим и желаемым состоянием без, обновляя файл tfstate. Кроме того, запуск terraform apply автоматически обновляет файл tfstate.

Поэтому я подумал, что если во время terraform plan будут обнаружены какие-либо дрейфы, я просто обновлю код terraform, чтобы учесть их, и позволю terraform apply обновить файл tfstate. Есть ли причина использовать обновление terraform независимо?

P.S. Я использую терраформ v0.15.0

Команда устарела и не должна использоваться. Так что нет, в наши дни нет причин использовать его.

Marcin 17.05.2022 12:34
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
1
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы правы в том, что terraform refresh используется для обновления вашего файла состояния терраформирования в соответствии с текущим состоянием, которое может дрейфовать, если ресурсы редактировались вне терраформирования.

terraform refresh сам по себе устарел, с пометкой, что в определенных ситуациях это может быть небезопасно. Документация предлагает использовать terraform apply -refresh-only в качестве альтернативы, поскольку она предлагает пользователю подтвердить изменения до их сохранения.

Что касается вашего вопроса «когда это используется?». По моему опыту, который в основном использует terraform для развертывания AWS, мы почти никогда не запускаем операцию обновления. Terraform автоматически проверяет текущее состояние в рамках цикла terraform plan/terraform apply. Это может быть или не быть специфичным для поставщика AWS.

Единственный сценарий, в котором я вижу важность обновления состояния, — это когда файл состояния используется в качестве источника данных через блок data remote_state_data. В частности, если вы намеренно изменили ресурс и не можете (или еще не обновили) разметку terraform, чтобы отразить это изменение. В этом сценарии другие модули terraform считывают значения из вашего файла состояния (а не из самих ресурсов) — если ваш ресурс и файл состояния не синхронизированы, то потребители файла состояния получат неточные данные.

Однако в большинстве случаев вы хотите, чтобы ваши ресурсы соответствовали их представлению в терраформе, поэтому вы должны terraform apply вернуть ресурсы и состояние в соответствие с вашим модулем терраформирования.

Спасибо за хорошо написанное объяснение и за добавление сценария, когда его можно использовать. Я отмечу это как принятый ответ.

Newbie Dev 18.05.2022 04:19

Другие вопросы по теме