Terraform を使用して Google Cloud リソースをプロビジョニングするためのベスト プラクティスは、Google が管理する Cloud Foundation Toolkit モジュールに統合されています。このドキュメントでは、これらのベスト プラクティスについて説明します。
このガイドでは Terraform の概要は説明しません。Google Cloud で Terraform を使用する方法については、Terraform を使ってみるをご覧ください。
仮想マシンイメージをベイクする
通常は、Packer などのツールを使用して仮想マシンイメージをベイクすることをおすすめします。Terraform で必要なのは、事前に作成したイメージを使用してマシンを起動するだけです。
事前にベイクされたイメージが使用できない場合、Terraform は provisioner
ブロックを使用して、構成管理ツールに新しい仮想マシンを渡すことができます。この方法はおすすめしません。最後の手段としてのみ使用してください。インスタンスに関連付けられた古い状態をクリーンアップするには、破棄ロジックを必要とするプロビジョナが when = destroy
で provisioner
ブロックを使用する必要があります。
Terraform は、インスタンス メタデータを使用して VM 構成情報を構成管理に提供する必要があります。
Identity and Access Management を管理する
Terraform と IAM の関連付けをプロビジョニングする場合、いくつかのリソースを使用できます。
google_*_iam_policy
(例:google_project_iam_policy
)google_*_iam_binding
(例:google_project_iam_binding
)google_*_iam_member
(例:google_project_iam_member
)
google_*_iam_policy
と google_*_iam_binding
は、信頼できる IAM の関連付けを作成します。ここでは、Terraform リソースが、関連するリソースに割り当てることができる権限の唯一の正確な情報源として機能します。
Terraform の外部で権限が変更された場合、Terraform は次回の実行時にすべての権限を上書きし、構成で定義されているポリシーを反映します。これは、特定の Terraform 構成によって完全に管理されているリソースには適していますが、Google Cloud によって自動的に管理されるロールが削除されたり、一部のサービスの機能が停止する可能性があります。
これを防ぐには、google_*_iam_member
リソースを直接使用するか、Google の IAM モジュールを使用することをおすすめします。