Spec-Zone.ru › OpenTofu 1.12

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

Во время планирования 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». Если объект помечен этим статусом, при следующем планировании OpenTofu принудительно заменит его так же, как если бы вы указали адрес этого объекта с помощью -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.12/cli/state/taint/

Spec-Zone.ru

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