- OpenTofu言語
- OpenTofuの設定
- バックエンド
- pg
バックエンドの種類: pg
Postgresデータベースバージョン10以降に状態を保存します。
このバックエンドは状態のロックをサポートしています。
設定例
terraform {
backend "pg" {
conn_str = "postgres://user:[email protected]/tofu_backend"
}
}
tofu initでバックエンドを初期化する前に、データベースが既に存在している必要があります。
createdb tofu_backend
このcreatedbコマンドは、データベースサーバーと一緒にインストールされるPostgresクライアントアプリケーションにあります。
環境変数の使用
機密性の高い認証情報がディスクに書き込まれたり、ソース管理にコミットされたりしないように、環境変数を使用してpgバックエンドを構成することを推奨します。
pgバックエンドは、標準のlibpq環境変数をサポートしています。
バックエンドは、設定全体を環境変数として与えることによって構成できます。
terraform {
backend "pg" {}
}
$ export PG_CONN_STR=postgres://user:[email protected]/tofu_backend
$ tofu init
または、機密性の高いパラメーターだけを渡すこともできます。
terraform {
backend "pg" {
conn_str = "postgres://db.example.com/tofu_backend"
}
}
$ export PGUSER=user
$ read -s PGPASSWORD
$ export PGPASSWORD
$ tofu init
データソースの設定
別の構成でpgリモートステートを使用するには、terraform_remote_stateデータソースを使用します。
data "terraform_remote_state" "network" {
backend = "pg"
config = {
conn_str = "postgres:///tofu_backend"
}
}
構成変数
認証情報やその他の機密データを供給するには、環境変数を使用することを推奨します。-backend-configを使用するか、これらの値を構成に直接ハードコードすると、OpenTofuはこれらの値を.terraformサブディレクトリとプランファイルの両方に含めます。詳細については、認証情報と機密データを参照してください。
次の構成オプションまたは環境変数がサポートされています。
conn_str- Postgres接続文字列。postgres://URL。PG_CONN_STRおよび標準のlibpq環境変数を使用して、PostgreSQLデータベースへの接続方法を示すこともできます。schema_name- 自動管理されるPostgresスキーマの名前。デフォルトはterraform_remote_state。PG_SCHEMA_NAME環境変数を使用して設定することもできます。skip_schema_creation-trueに設定した場合、Postgresスキーマが既に存在している必要があります。PG_SKIP_SCHEMA_CREATION環境変数を使用して設定することもできます。OpenTofuはスキーマを作成しようとしません。これはデータベース管理者によって既に作成されている場合に役立ちます。skip_table_creation-trueに設定した場合、Postgresテーブルが既に存在している必要があります。PG_SKIP_TABLE_CREATION環境変数を使用して設定することもできます。OpenTofuはテーブルを作成しようとしません。これはデータベース管理者によって既に作成されている場合に役立ちます。skip_index_creation-trueに設定した場合、Postgresインデックスが既に存在している必要があります。PG_SKIP_INDEX_CREATION環境変数を使用して設定することもできます。OpenTofuはインデックスを作成しようとしません。これはデータベース管理者によって既に作成されている場合に役立ちます。
技術設計
このバックエンドは、schema_name変数で構成された自動管理されるPostgresスキーマにstatesという1つのテーブルを作成します。
テーブルは、ワークスペース名でキー付けされます。ワークスペースが使用されていない場合は、defaultという名前が使用されます。
ロックは、Postgresアドバイザリロックを使用してサポートされています。force-unlockはサポートされていません。これらのデータベースネイティブロックは、セッションが中断されたり、接続が失敗したりすると自動的にロック解除されるためです。Postgresサーバーで未処理のロックを確認するには、pg_locksシステムビューを使用します。
statesテーブルには以下が含まれます。
- アドバイザリロックのキーとして使用されるシリアル整数
id - 一意のインデックスを持つテキストとしてのワークスペース
nameキー - テキストとしてのOpenTofu状態
data