Spec-Zone.ru › OpenTofu 1.11

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

Во время планирования 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=..., который позволяет не создавать промежуточный снимок состояния с помеченным объектом.

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

Spec-Zone.ru

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