- OpenTofu言語
- ステート
- リモートステート
リモートステート
デフォルトでは、OpenTofuはステートをローカルの`terraform.tfstate`という名前のファイルに保存します。チームでOpenTofuを使用する場合、ローカルファイルを使用すると、OpenTofuの実行前に各ユーザーが常に最新のステートデータを持っていることを確認し、他の誰も同時にOpenTofuを実行しないようにする必要があるため、OpenTofuの使用が複雑になります。
_リモート_ステートを使用すると、OpenTofuはステートデータをリモートデータストアに書き込み、チームのすべてのメンバー間で共有できます。 OpenTofuは、TACOS(TF Automation and Collaboration Software)、HashiCorp Consul、Amazon S3、Azure Blob Storage、Google Cloud Storage、Alibaba Cloud OSSなどにステートを保存することをサポートしています。
リモートステートは、バックエンドまたはTACOS(TF Automation and Collaboration Software)によって実装されます。どちらも構成のルートモジュールで構成できます。
委任とチームワーク
リモートステートを使用すると、出力値を他の構成と共有できます。これにより、インフラストラクチャをより小さなコンポーネントに分解できます。
言い換えれば、リモートステートを使用すると、チームは追加の構成ストアに頼ることなく、読み取り専用の方法でインフラストラクチャリソースを共有できます。
たとえば、コアインフラストラクチャチームは、コアマシン、ネットワーキングなどの構築を処理し、他のチームが独自のインフラストラクチャを実行するためにいくつかの情報を公開できます。 AWSのより具体的な例として、VPC ID、サブネット、NATインスタンスIDなどをリモートステートを介して公開し、他のOpenTofuステートでそれを消費させることができます。
使用例については、`terraform_remote_state`データソースを参照してください。
リモートステートは、構成間でデータを共有するための便利で組み込みのメカニズムですが、他の構成と他のコンシューマーの両方に設定を渡すために、より一般的なストアを使用することをお勧めします。たとえば、環境にHashiCorp Consulがある場合、`consul_key_prefix`を使用してConsulに書き込むOpenTofu構成と、`consul_keys`データソースを使用してそれらの値を消費する別のOpenTofu構成を作成できます。
ロックとチームワーク
フル機能のリモートバックエンドの場合、OpenTofuはステートロックを使用して、同じステートに対するOpenTofuの同時実行を防ぐこともできます。
TACOS(TF Automation and Collaboration Software)は、OpenTofu操作を中央の場所でキューに入れることにより、既存のプランが承認待ちになっているときに新しいプランを作成しようとする試みを検出することもできる、さらに強力なロックの概念をサポートする商用製品です。これにより、チームはインフラストラクチャの変更についてより簡単に調整およびコミュニケーションをとることができます。