Spec-Zone.ru › OpenTofu 1.9

Принудительное пересоздание ресурсов

По умолчанию при планировании OpenTofu получает последнее состояние каждого существующего объекта и сравнивает его с текущей конфигурацией, планируя действия только для объектов, текущее состояние которых не соответствует конфигурации.

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

Если вы знаете, что объект повреждён, или хотите принудительно заменить его по любой другой причине, вы можете переопределить поведение OpenTofu по умолчанию с помощью параметра планирования -replace=... при запуске tofu plan или tofu apply:

Блок кода
$ tofu apply -replace="aws_instance.example"
# ...

  # aws_instance.example will be replaced, as requested
-/+ resource "aws_instance" "example" {
      # ...
    }

Статус «tainted»​

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

OpenTofu представляет эту ситуацию, помечая объект в состоянии как «tainted». Если объект помечен этим статусом, при следующем планировании будет принудительно выполнена его замена — аналогично тому, как если бы вы указали адрес этого объекта с помощью -replace=..., как описано выше.

Блок кода
  # aws_instance.example is tainted, so it must be replaced
-/+ resource "aws_instance" "example" {
      # ...
    }

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

Вы также можете принудительно пометить определённый объект как tainted с помощью команды tofu taint, однако этот подход устарел и вместо него рекомендуется использовать параметр -replace=..., позволяющий не создавать промежуточный снимок состояния с объектом, помеченным как tainted.

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

Spec-Zone.ru

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