Удаленное состояние
По умолчанию 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.10/language/state/remote/