Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Terraform には、クラウド プロバイダや他の API とやり取りできるプロバイダというプラグインが用意されています。Google Cloud 用の Terraform プロバイダ(Google Cloud プロバイダ)を使用して、Google Cloud インフラストラクチャのプロビジョニングと管理を行うことができます。
Terraform を使用するメリット
このセクションでは、Terraform を使用して Google Cloud インフラストラクチャのプロビジョニングと管理を行うメリットについて説明します。
- Terraform は、Google Cloud インフラストラクチャのプロビジョニングと自動化で最もよく使用されるツールです。Google Cloud プロバイダを使用すると、同じ宣言型構文とツールですべての Google Cloud リソースの構成と管理を行うことができます。
- Terraform を使用すると、インフラストラクチャの望ましい最終状態を指定できます。同じ構成を複数回デプロイして、再現可能な開発環境、テスト環境、本番環境を作成できます。
- Terraform では、構成を適用したときに Terraform が行う処理を示す実行プランを生成できます。これにより、Terraform を使用してインフラストラクチャを変更するときに想定外の事態を回避できます。
- Terraform では、共通のコードをモジュール形式でパッケージ化して再利用できます。モジュールは、クラウド リソースを作成するための標準インターフェースを提供します。これにより、プロジェクトが簡素化され、インフラストラクチャを読み取り可能なブロックに整理できます。さらに、Google Cloud では、独自のデプロイ可能なモジュールをブループリントとして公開しています。また、スタートガイドとしてジャンプ スタート ソリューションも公開しています。
- Terraform はインフラストラクチャの現在の状態を記録し、状態を効果的に管理できます。Terraform の状態ファイルは、デプロイメント内のすべてのリソースを追跡します。
Terraform を使用する
Terraform には宣言型で構成指向の構文があり、これを使用して、プロビジョニングするインフラストラクチャを記述できます。この構文を使用して、インフラストラクチャの望ましい最終状態を Terraform 構成ファイルに定義します。次に、Terraform CLI を使用して、構成ファイルに基づいてインフラストラクチャをプロビジョニングします。
以降のステップでは、Terraform の仕組みについて説明します。
- プロビジョニングする Google Cloud インフラストラクチャを Terraform 構成ファイルに記述します。この構成をプロビジョニングする方法を記述するコードを作成する必要はありません。
terraform plan
コマンドを実行します。これにより、構成が評価され、実行プランが生成されます。プランを確認し、必要に応じて変更します。- 次に、
terraform apply
コマンドを実行します。これにより、次のアクションが実行されます。- バックグラウンドで、対応する Google Cloud APIs を呼び出し、実行プランに基づいてインフラストラクチャをプロビジョニングします。
- Terraform 状態ファイルを作成します。これは、構成ファイル内のリソースと実際のインフラストラクチャ内のリソースとの JSON 形式のマッピングです。Terraform は、このファイルを使用してインフラストラクチャの最新状態を把握し、リソースを作成、更新、破棄するタイミングを決定します。
- その後、
terraform apply
を実行すると、Terraform は状態ファイルのマッピングを使用して、既存のインフラストラクチャをコードと比較し、必要に応じて更新を行います。- 構成ファイルで定義されたリソース オブジェクトが状態ファイルに存在しない場合は、Terraform によってリソース オブジェクトが作成されます。
- リソース オブジェクトが状態ファイルに存在し、構成ファイルと構成が異なる場合、Terraform は構成ファイルと一致するようにリソースを更新します。
- 状態ファイル内のリソース オブジェクトが構成ファイルと一致する場合、Terraform はリソースを変更しません。
Google Cloud プロバイダ
Google Cloud インフラストラクチャのプロビジョニングと管理に使用できるプロバイダは 2 つあります。
google
: このプロバイダは、Google Cloud APIs のプロビジョニングと管理に使用します。google-beta
: このプロバイダは、Google Cloud ベータ版 API のプロビジョニングと管理に使用します。
これらのプロバイダの使用方法については、Google Cloud プロバイダの構成リファレンスをご覧ください。
google
プロバイダと google-beta
プロバイダは、Magic Modules というツールを使用して開発されています。Magic Modules を使用すると、コントリビューターは単一のコードベースに対して変更を行い、google
プロバイダと google-beta
プロバイダの両方を同時に開発できます。
Magic Modules を使用して Google Cloud プロバイダに変更を行う場合は、Magic Modules コントリビューション ガイドをご覧ください。
次のステップ
- Terraform を使用して Compute Engine で基本的なウェブサーバーを作成する方法を学習する
- Terraform の状態を Cloud Storage バケットに保存する方法を学習する
- さまざまな Google Cloud 用の Terraform サンプルを確認する
- Google Cloud 用の Terraform モジュールとブループリントを確認する