Terraform の操作に関するベスト プラクティス

このドキュメントでは、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"

次のステップ