Spec-Zone.ru › OpenTofu 1.10

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

По умолчанию во время планирования 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 может автоматически определить, что объект находится в незавершённом состоянии или работает с ухудшенными характеристиками. Например, если создание сложного объекта завершается с ошибкой, но его части уже существуют в удалённой системе, или если объект создан успешно, но затем произошёл сбой на этапе подготовки, 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.10/cli/state/taint/

Spec-Zone.ru

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