HashiCorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Terraform には、クラウド プロバイダや他の API とやり取りできるプロバイダというプラグインが用意されています。Google Distributed Cloud(GDC)エアギャップの場合、Terraform 用の特定の GDC エアギャップ プロバイダがないため、Kubernetes プロバイダを使用してリソースをプロビジョニングする必要があります。
GDC リソースは、Kubernetes リソースの完全なライフサイクル管理を行う Kubernetes プロバイダによって管理できます。
| オペレーション | Terraform プロバイダ |
|---|---|
| 作成 | Kubernetes プロバイダ |
| 読み取り | |
| 更新 | |
| 削除 | 該当なし、terraform destroy を使用 |
Terraform の仕組み
Terraform には宣言型で構成指向の構文があり、これを使用して、GDC プロジェクトにプロビジョニングするインフラストラクチャを記述できます。1 つまたは複数の Terraform 構成ファイルで構成を作成し、Terraform CLI を使用して、この構成を GDC リソースに適用できます。
以降のステップでは、Terraform の仕組みについて説明します。
プロビジョニングするインフラストラクチャを Terraform 構成ファイルに記述します。インフラストラクチャのプロビジョニング方法を記述するコードは必要ありません。Terraform がインフラストラクチャをプロビジョニングします。
terraform planコマンドを実行します。これにより、構成が評価され、実行プランが生成されます。プランを確認し、必要に応じて変更します。次に、
terraform applyコマンドを実行します。これにより、次のアクションが実行されます。バックグラウンドで、対応する GDC エアギャップ API を呼び出し、実行プランに基づいてインフラストラクチャをプロビジョニングします。
Terraform 状態ファイルを作成します。これは、構成ファイル内のリソースと実際のインフラストラクチャ内のリソースをマッピングする JSON ファイルです。Terraform は、このファイルを使用してインフラストラクチャの最新状態を記録し、リソースを作成、更新、破棄するタイミングを決定します。
terraform applyを実行すると、Terraform は状態ファイルのマッピングを使用して、既存のインフラストラクチャをコードと比較し、必要に応じて更新を行います。構成ファイルで定義されたリソース オブジェクトが状態ファイルに存在しない場合、Terraform はリソース オブジェクトを作成します。
リソース オブジェクトが状態ファイルに存在し、構成ファイルと構成が異なる場合、Terraform は構成ファイルと一致するようにリソースを更新します。
状態ファイル内のリソース オブジェクトが構成ファイルと一致する場合、Terraform はリソースを変更しません。
GDC エアギャップの Terraform リソース
リソースは、Terraform 言語の基本要素です。各リソース ブロックは、1 つ以上のインフラストラクチャ オブジェクトを記述します。
GDC エアギャップ は Kubernetes 上に構築されています。Node、PersistentVolume、Service などのコア Kubernetes API に加えて、CustomResourceDefinition API もサポートしています。カスタム リソース定義を使用することで、GDC エアギャップ インフラストラクチャを表す GDC 固有の API が構築されます。
次の表に、GDC エアギャップで使用可能な Terraform リソースを示します。
| Terraform リソース | データソース |
|---|---|
kubernetes_manifest
|