前提
google provicer v5.36.0のリファレンスを元にしたものになります。
TerraformでSpanner上にインスタンスを作成し、さらにそのインスタンスの上にデータベースを作成する設定をしたかった時に書きためてたメモです。
Resources
google_spanner_instance
Cloud Spannerインスタンスの設定。
公式リファレンス
必須の引数
- name: インスタンスのユニークID。インスタンス作成後の変更不可。6〜30文字で指定。与えなかった場合は
tf-
から始まるランダムな文字列が設定される。 - config: インスタンスの地理的な配置および、このインスタンスに含まれるデータベース群のレプリケーションの設定を定義するインスタンス構成の名前(設定できる値は、リージョンと似ている)。
- display_name: GCPコンソールで表示されるインスタンスの説明的な名前。プロジェクトごとに一意である必要がある。
任意の引数
- num_nodes: インスタンスに割り当てるノードの数。num_node or processing_units のどちらか一方を指定する必要あり。
- processing_units: インスタンスに割り当てる処理ユニット(PU)の数。num_node or processing_units のどちらか一方を指定する必要あり。1ノード = 1000PU。
- labels: 各リソースに存在するアレ。
- autocaling_config: オートスケーリング設定(2024/08/23時点でプレビュー版の機能であるため割愛
- autoscaling_limits
- min_processing_units
- max_processing_units
- min_nodes
- max_nodes
- autoscaling_targets
- high_priority_cpu_utilization_percent
- storage_utilization_percent
- autoscaling_limits
- project: リソースが所属するプロジェクトのID。デフォルトではプロバイダーのプロジェクトIDが使われる。
- force_destroy: インスタンスを削除する際に、全てのバックアップも削除するか否かを
true/false
で設定。
コンソールでSpannerインスタンスを作成する場合とgoogle providerの引数名との対応
- display_name: インスタンス名
- name: インスタンスID
- config: リージョン/デュアルリージョン/マルチリージョンのラジオボタン + 構成を選択のドロップダウン
- num_nodes, processing_units: ノード/処理ユニットのラジオボタン
- autoscaling_config: 自動スケーリング(プレビュー)
google_spanner_instance_config
カスタム構成を設定したい場合に。割愛。
google_spanner_instance_iam
他のリソースと同様に、以下3つで設定可能。
Terraformでのリソースに対するIAM設定は、[Terraform][google provider]IAMまとめの通り共通。
- google_spanner_instance_iam_policy
- google_spanner_instance_iam_binding
- google_spanner_instance_iam_member
設定対象のSpannerインスタンスは、instance
(インスタンス名)で指定する。
公式リファレンス
google_spaner_database
Spannerデータベースの設定。
公式リファレンス
必須の引数
- name: データベースのユニークID。データベース作成後の変更不可。正規表現的に
[a-z][-a-z0-9]*[a-z0-9]
(="<a〜zから1文字><a〜z,0〜9,-からn文字(n>=0)><a〜zor0〜9から1文字>"
)で設定可能。 - instance: データベースを作成するインスタンス名(
google_spanner_instance.name
に相当)。
任意の引数
- version_retentiion_period: データベースの保持期間。 保持期間は 1時間から7日の間でなければならず、日、時、分、または秒単位で指定。 デフォルトは1hである。
- ddl(任意): 新しく作成されたデータベース内で実行するDDL文。 テーブルやインデックスなどを作成できる。 DDLの実行でエラーが発生した場合、データベースは作成されない。
- encryption_config: データベース暗号化設定。
- kms_key_name(必須): データベースの暗号化に使用するKMSキーの完全修飾名。KMSキーはSpannerデータベースと同じロケーションに存在する必要がある。
- database_dialect: Spannerデータベースの方言。
GOOGLE_STANDARD_SQL
orPOSTGRESQL
の二択。デフォルトはGOOGLE_STANDARD_SQL
。 - enable_drop_protection: データベースの
DROP
を保護するかどうか。デフォルトはfalse
。true
に設定すると、terraformに限らずすべてのインターフェースからデータベースの削除を保護する。データベースの親インスタンスの削除も防ぐことができる。 - project: リソースが所属するプロジェクトのID。デフォルトではプロバイダーのプロジェクトIDが使われる。
- deletion_protection: Terraformがデータベースを破壊しないようにするか。デフォルトは
true
。terraform destroyやterraform apply
によって、データベースの削除を実行しようとした場合、deletion_protection
がfalse
になっていなければコマンドが失敗するようになる。
google_spanner_database_iam
他のリソースと同様に、以下3つで設定可能。Terraformでのリソースに対するIAM設定は、 [Terraform][google provider]IAMまとめの通り共通。
- google_spanner_database_iam_policy
- google_spanner_database_iam_binding
- google_spanner_database_iam_member
設定対象のデータベースは、instance
(Spannerのインスタンス名)とdatabase
(データベース名)で指定する。
公式リファレンス