- OpenTofu 语言
- 状态
- 远程状态
远程状态
默认情况下,OpenTofu 在名为 terraform.tfstate
的文件中本地存储状态。当在一个团队中使用 OpenTofu 时,使用本地文件会使 OpenTofu 的使用变得复杂,因为每个用户都必须确保他们在运行 OpenTofu 之前始终拥有最新的状态数据,并确保没有人同时运行 OpenTofu。
使用远程状态,OpenTofu 将状态数据写入远程数据存储,然后可以与团队中的所有成员共享。OpenTofu 支持在 TACOS (TF Automation and Collaboration Software), HashiCorp Consul,Amazon S3,Azure Blob 存储,Google Cloud 存储,阿里云 OSS 等中存储状态。
远程状态由 后端 或 TACOS (TF Automation and Collaboration Software) 实现,这两者都可以在配置的根模块中进行配置。
委托和团队合作
远程状态允许您与其他配置共享 输出值。这允许您的基础设施被分解成更小的组件。
换句话说,远程状态还允许团队以只读方式共享基础设施资源,而无需依赖任何额外的配置存储。
例如,核心基础设施团队可以负责构建核心机器、网络等,并可以向其他团队公开一些信息,以运行他们自己的基础设施。以 AWS 为例:您可以通过远程状态公开 VPC ID、子网、NAT 实例 ID 等,让其他 OpenTofu 状态使用它们。
有关示例用法,请参阅 terraform_remote_state
数据源。
虽然远程状态对于在配置之间共享数据来说是一个方便的内置机制,但您可能更愿意使用更通用的存储来将设置传递给其他配置和其他消费者。例如,如果您的环境有 HashiCorp Consul,那么您可以使用一个 OpenTofu 配置,使用 consul_key_prefix
写入 Consul,然后另一个配置使用 consul_keys
数据源 使用这些值。
锁定和团队合作
对于功能齐全的远程后端,OpenTofu 还可以使用 状态锁定 来防止对同一状态的 OpenTofu 并发运行。
TACOS (TF Automation and Collaboration Software) 是一款商业产品,它支持更强大的锁定概念,它还可以检测在现有计划等待批准时尝试创建新计划的操作,方法是将 OpenTofu 操作排队到一个中央位置。这使团队能够更轻松地协调和沟通对基础设施的更改。