Хорошо, прежде всего, я дам вам знать, что делает команда terraform refresh
, но я хочу отметить, что эта команда фактически устарела, начиная с Terraform v0.15.4!
Используйте его на свой страх и риск для версий v0.15.4 и выше. Для более ранних версий эта статья будет очень актуальна, потому что это действительно ваш единственный выбор для того, что она делает.
Но для версий v0.15.4 и выше будет работать terraform refresh
и все такое, но для него есть лучшая альтернатива: terraform apply -refresh-only
. Я немного расскажу, почему, чуть позже, но давайте поговорим о том, что делает terraform refresh
.
обновление терраформы
Что делает terraform refresh
, так это считывает все текущие настройки со всех управляемых удаленных объектов в модуле, а затем обновляет состояние Terraform для соответствия. В документации есть важное примечание:
Это не изменит ваши реальные удаленные объекты, но изменит состояние Terraform.
При обычном использовании Terraform вы обычно не будете использовать эту команду часто, потому что она будет закрыта при запуске terraform plan
и terraform apply
.
Плохая сторона terraform refresh
заключается в том, что она не дает вам возможности просмотреть результаты команды до того, как она обновит состояние и «обновит» его. В документации Terraform объясняется, почему это может быть нежелательно:
Автоматическое применение эффекта обновления рискованно, потому что если вы неправильно настроили учетные данные для одного или нескольких поставщиков, поставщик может быть введен в заблуждение, думая, что все управляемые объекты были удалены, и, таким образом, удалить все отслеживаемые объекты без какого-либо подтверждения. быстрый.
Что ж, это звучит не очень хорошо. В Terraform обычно вы хотите подтвердить изменения, которые вы будете вносить, и это позволит обойти это. Таким образом, terraform refresh
в основном является псевдонимом для следующего:
terraform apply -refresh-only -auto-approve
Далее в документации говорится: «Везде, где это возможно, избегайте явного использования terraform refresh
и вместо этого полагайтесь на поведение Terraform по автоматическому обновлению существующих объектов в рамках создания обычного плана».
Лучшая альтернатива
Если вы используете версию Terraform v0.15.4 и выше, вам следует использовать эту команду:
terraform apply -refresh-only
Это позволит вам фактически просматривать изменения состояния с помощью интерактивного приглашения, которое вы вводите, прежде чем изменения будут применены.
Так что, если у вас есть привычка использовать terraform refresh
или вы узнали об этом из этой статьи, то возьмите за привычку использовать вместо нее эту команду! Лучше следовать предложенному пути — и лучше перестраховаться, чем сожалеть.
Если вы нашли это полезным или вам просто понравилось это читать, подумайте о том, чтобы зарегистрироваться, чтобы стать участником Medium. Это 5 долларов в месяц и дает вам неограниченный доступ к историям на Medium на такие темы, как программное обеспечение, технологии и многое другое. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию.