Spec-Zone.ru › OpenTofu 1.11

Команда: state rm

Основная функция состояния OpenTofu — отслеживать связи между адресами экземпляров ресурсов в конфигурации и удалёнными объектами, которые они представляют. Обычно OpenTofu автоматически обновляет состояние в ответ на действия, выполняемые при применении плана, например удаляет связь с удалённым объектом, который был удалён.

В менее распространённой ситуации, когда вы хотите удалить связь с существующим удалённым объектом, не уничтожая его предварительно, можно использовать tofu state rm. В результате OpenTofu «забудет» объект, хотя он продолжит существовать в удалённой системе.

Использование​

Использование: tofu state rm [options] ADDRESS...

OpenTofu выполнит поиск в состоянии всех экземпляров, соответствующих указанному адресу ресурса, и удалит запись о каждом из них, чтобы OpenTofu больше не отслеживал соответствующие удалённые объекты.

Это означает, что, хотя объекты продолжат существовать в удалённой системе, последующий tofu plan будет содержать действие по созданию нового объекта для каждого из «забытых» экземпляров. В зависимости от ограничений удалённой системы создание этих объектов может завершиться ошибкой, если их имена или другие идентификаторы конфликтуют со старыми объектами, которые всё ещё существуют.

Примечание

Использование переменных в источниках модулей, конфигурации бэкенда или блоке шифрования требует задания значений переменных корневого модуля при запуске tofu state rm.

Эта команда также принимает следующие параметры:

  • -dry-run — вывести список всех экземпляров ресурсов, соответствующих указанному адресу, не «забывая» их.

  • -lock=false — не блокировать состояние на время выполнения операции. Это опасно, если другие пользователи могут одновременно выполнять команды в той же рабочей области.

  • -lock-timeout=DURATION — если блокировка не отключена с помощью -lock=false, указать OpenTofu повторять попытки получить блокировку в течение заданного периода времени, прежде чем вернуть ошибку. Длительность задаётся числом, за которым следует буква единицы времени, например «3s» означает три секунды.

  • -var 'NAME=VALUE' — задать значение для одной входной переменной, объявленной в корневом модуле конфигурации. Используйте этот параметр несколько раз, чтобы задать значения для нескольких переменных. Дополнительную информацию см. в разделе Входные переменные в командной строке.

  • -var-file=FILENAME — задать значения для нескольких входных переменных, объявленных в корневом модуле конфигурации, используя определения из файла «tfvars». Используйте этот параметр несколько раз, чтобы добавить значения из нескольких файлов.

Помимо параметров -var и -var-file, существуют и другие способы задать значения входных переменных в корневом модуле. Дополнительную информацию см. в разделе Задание значений переменных корневого модуля.

Для конфигураций, использующих только бэкенд cloud или бэкенд remote, tofu state rm также принимает параметр -ignore-remote-version.

Для конфигураций, использующих только локальное состояние local, tofu state rm также принимает устаревшие параметры -state, -state-out и -backup.

Пример: удаление всех экземпляров ресурса​

В следующем примере OpenTofu «забудет» все экземпляры ресурса packet_device с именем «worker».

Блок кода
$ tofu state rm 'packet_device.worker'

У ресурса, который не использует count или for_each, есть только один экземпляр, поэтому этот синтаксис также подходит для выбора этого единственного экземпляра.

Пример: удаление всех экземпляров ресурса в модуле​

Чтобы выбрать ресурс, определённый во вложенном модуле, необходимо указать путь к этому модулю в составе адреса ресурса:

Блок кода
$ tofu state rm 'module.foo.packet_device.worker'

Пример: удаление всех экземпляров всех ресурсов в модуле​

В следующем примере OpenTofu «забудет» все экземпляры, связанные со всеми ресурсами, определёнными во всех экземплярах модуля с именем foo:

Блок кода
$ tofu state rm 'module.foo'

Пример: удаление определённого экземпляра ресурса с помощью count​

Ресурс, определённый с помощью метааргумента count, имеет несколько экземпляров, каждый из которых идентифицируется целым числом. Вы можете выбрать определённый экземпляр, указав в адресе его индекс:

Блок кода
$ tofu state rm 'packet_device.worker[0]'

Квадратные скобки ([, ]) имеют специальное значение в некоторых оболочках, поэтому вам может потребоваться заключить адрес в кавычки или экранировать его, чтобы передать OpenTofu без изменений. В примере выше показан типичный синтаксис кавычек для оболочек Unix.

Пример: удаление определённого экземпляра ресурса с помощью for_each​

Ресурс, определённый с помощью метааргумента for_each, имеет несколько экземпляров, каждый из которых идентифицируется строкой. Вы можете выбрать определённый экземпляр, указав в адресе его ключ.

Однако синтаксис строк включает кавычки, а символ кавычек часто имеет специальное значение в командных оболочках, поэтому необходимо использовать соответствующий синтаксис заключения в кавычки и/или экранирования для используемой оболочки. Например:

Оболочки Unix, например в Linux или macOS:

Блок кода
$ tofu state rm 'packet_device.worker["example"]'

Командная строка Windows (cmd.exe):

Блок кода
$ tofu state rm packet_device.worker[\"example\"]

PowerShell:

Блок кода
$ tofu state rm 'packet_device.worker[\"example\"]'

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.11/cli/commands/state/rm/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API