Команда: destroy
Команда tofu destroy — это удобный способ уничтожить все удалённые объекты, управляемые определённой конфигурацией OpenTofu.
Хотя обычно в рабочей среде не следует уничтожать долгоживущие объекты, OpenTofu иногда используют для управления временной инфраструктурой в целях разработки. В таком случае можно использовать tofu destroy, чтобы после завершения работы быстро удалить все эти временные объекты.
Использование
Использование: tofu destroy [options]
Эта команда — всего лишь удобный псевдоним следующей команды:
tofu apply -destroy
По этой причине команда принимает большинство параметров, принимаемых командой tofu apply, однако не принимает аргумент с файлом плана и принудительно выбирает режим планирования «destroy».
Также можно создать предварительный план уничтожения, чтобы увидеть последствия этой операции, выполнив следующую команду:
tofu plan -destroy
Будет выполнена команда tofu plan в режиме destroy. Она покажет предлагаемые изменения для уничтожения, не применяя их.
Забытые ресурсы
При выполнении команды tofu destroy OpenTofu попытается уничтожить все ресурсы, управляемые конфигурацией. Однако если для каких-либо ресурсов задан метааргумент lifecycle.destroy со значением false, эти ресурсы будут «забыты», а не уничтожены.
Когда ресурсы забываются:
- Они удаляются из файла состояния OpenTofu
- Фактические объекты инфраструктуры остаются в облачном провайдере или удалённой системе
- Команда
tofu destroyзавершается с ненулевым кодом возврата, указывая на то, что не все ресурсы были полностью удалены
Такое поведение кода возврата может иметь значение для автоматизации и конвейеров CI/CD, поскольку оно сигнализирует о том, что операция уничтожения завершилась не так, как обычная операция уничтожения. Если вы хотите, чтобы tofu destroy не выдавала ошибки и завершалась с нулевым кодом возврата, когда ресурсы забываются, можно использовать флаг -suppress-forget-errors.
Атрибут destroy сохраняется в файле состояния, даже если ресурсы удалены из конфигурации. Это означает, что ресурсы не будут уничтожены, даже если их удалить из конфигурации. Чтобы полностью уничтожить такие ресурсы, которые всё ещё находятся в состоянии, сначала необходимо снова добавить конфигурацию ресурса и удалить атрибут lifecycle.destroy (или задать ему значение true).
Также можно добавить блок removed для удалённого ресурса с параметром lifecycle.destroy = true. Он переопределит атрибут destroy в файле состояния.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/cli/commands/destroy/