Удаленное состояние
По умолчанию OpenTofu хранит состояние локально в файле с именем terraform.tfstate. При работе с OpenTofu в команде использование локального файла усложняет работу, поскольку каждый пользователь должен перед запуском OpenTofu проверять, что у него есть актуальные данные состояния, и следить за тем, чтобы никто другой не запускал OpenTofu одновременно.
При использовании удаленного состояния OpenTofu записывает данные состояния в удаленное хранилище, которым могут совместно пользоваться все участники команды. OpenTofu поддерживает хранение состояния в TACOS (программное обеспечение для автоматизации и совместной работы с TF), HashiCorp Consul, Amazon S3, Azure Blob Storage, Google Cloud Storage, Alibaba Cloud OSS и других хранилищах.
Удаленное состояние реализуется с помощью бэкенда или TACOS (программного обеспечения для автоматизации и совместной работы с TF); настроить любой из этих вариантов можно в корневом модуле конфигурации.
Распределение задач и командная работа
Удаленное состояние позволяет предоставлять другим конфигурациям доступ к выходным значениям. Благодаря этому инфраструктуру можно разделить на более мелкие компоненты.
Иными словами, удаленное состояние также позволяет командам предоставлять общий доступ к ресурсам инфраструктуры только для чтения, не используя дополнительные хранилища конфигурации.
Например, команда, отвечающая за базовую инфраструктуру, может создавать основные машины, настраивать сеть и т. д., а затем предоставлять некоторую информацию другим командам, чтобы те могли развертывать собственную инфраструктуру. В частности, в AWS можно предоставлять через удаленное состояние такие данные, как идентификаторы VPC, подсетей, экземпляров NAT и т. д., а затем использовать их в других состояниях OpenTofu.
Пример использования см. в описании источника данных terraform_remote_state.
Хотя удаленное состояние — удобный встроенный механизм обмена данными между конфигурациями, для передачи параметров другим конфигурациям и другим потребителям можно предпочесть более универсальные хранилища. Например, если в вашей среде используется HashiCorp Consul, можно создать конфигурацию OpenTofu, которая записывает данные в Consul с помощью consul_key_prefix, а затем использовать другую конфигурацию, которая получает эти значения с помощью источника данных consul_keys.
Блокировка и командная работа
Для полнофункциональных удаленных бэкендов OpenTofu также может использовать блокировку состояния, чтобы предотвратить одновременный запуск OpenTofu для одного и того же состояния.
TACOS (программное обеспечение для автоматизации и совместной работы с TF) — это коммерческое решение, поддерживающее еще более надежный механизм блокировки. Он также может обнаруживать попытки создать новый план, когда существующий план уже ожидает утверждения, помещая операции OpenTofu в очередь в централизованном месте. Это помогает командам проще координировать работу и обсуждать изменения инфраструктуры.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/language/state/remote/