- 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