このドキュメントでは、Terraform の操作に関するガイドラインと推奨事項について説明します。
このガイドでは Terraform の概要は説明しません。Google Cloud で Terraform を使用する方法については、Terraform を使ってみるをご覧ください。
常に計画してから始める
最初に Terraform の実行プランを作成します。計画を出力ファイルに保存します。インフラストラクチャ オーナーが承認した後、計画を実行します。デベロッパーが変更のローカル プロトタイピングを行う場合でも、計画を作成して、計画を適用する前に追加、変更、破棄されるリソースを確認する必要があります。
自動パイプラインを実装する
実行コンテキストの一貫性を保つために、自動ツールを介して Terraform を実行します。Jenkins などのビルドシステムがすでに使用されており、広く採用されている場合は、それを使用して terraform plan
コマンドと terraform apply
コマンドを自動的に実行します。使用可能な既存のシステムがない場合は、Cloud Build または Terraform Cloud のいずれかを使用します。
継続的インテグレーションにサービス アカウントの認証情報を使用する
Terraform を CI / CD パイプラインのマシンから実行する場合は、パイプラインを実行しているサービスからサービス アカウントの認証情報を継承する必要があります。CI パイプラインは可能な限り Google Cloud で実行してください。Cloud Build、Google Kubernetes Engine、Compute Engine では、サービス アカウント キーをダウンロードせずに認証情報を挿入できるためです。
Google Cloud の外部で実行されるパイプラインの場合は、Workload Identity 連携を使用して、サービス アカウント キーをダウンロードせずに認証情報を取得します。
既存のリソースのインポートを回避する
可能であれば、(terraform import
を使用して)既存のリソースをインポートすることは避けてください。手動で作成したリソースの来歴や構成を完全に把握することは困難です。代わりに Terraform を使用して新しいリソースを作成し、古いリソースを削除してください。
古いリソースを削除するのに手間がかかる場合は、明示的に承認を受けて terraform import
コマンドを使用します。リソースを Terraform にインポートした後、Terraform でのみリソースを管理します。
Google では、Google Cloud リソースを Terraform 状態にインポートするために使用できるツールを提供しています。詳細については、Google Cloud リソースを Terraform の状態にインポートするをご覧ください。
Terraform の状態を手動で変更しない
Terraform 状態ファイルは、Terraform 構成と Google Cloud リソース間のマッピングを維持するために重要です。破損があると、インフラストラクチャに大きな問題が発生する可能性があります。Terraform の状態の変更が必要な場合は、terraform state
コマンドを使用します。
バージョンの固定状態を定期的に確認する
バージョンを固定すると安定性が保証されますが、バグ修正やその他の改善は構成に組み込まれません。そのため、Terraform、Terraform プロバイダ、モジュールのバージョン固定状態を定期的に確認してください。
このプロセスを自動化するには、Dependabot などのツールを使用します。
ローカルでの実行中にアプリケーションのデフォルト認証情報を使用する
デベロッパーが Terraform 構成をローカルで反復処理する場合、認証のために gcloud auth application-default login
を実行して、アプリケーションのデフォルト認証情報を生成する必要があります。サービス アカウント キーはダウンロードしないでください。ダウンロードすると、キーの管理と保護が難しくなります。
Terraform にエイリアスを設定する
ローカルでの開発を容易にするには、コマンドシェル プロファイルにエイリアスを追加します。
alias tf="terraform"
alias terrafrom="terraform"