Google Cloud リソースを Terraform 形式にエクスポートする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Google Cloud にリソースをデプロイしたら、Terraform を使用して Infrastructure as Code(IaC)を管理する必要があります。Google では、プロジェクト、フォルダ、組織内のリソースの Terraform コードを生成するためのツールを提供しています。

始める前に

Config Connector のコマンドライン インターフェース(CLI)をインストールします。

gcloud components install config-connector

Config Connector を使用すると、Google Cloud の Terraform 一括エクスポート ツールを使用できます。

プロジェクト構成全体を Terraform HCL コードにエクスポートする

gcloud beta resource-config bulk-export --resource-format=terraform コマンドは、現在プロジェクト、フォルダまたは組織に構成されているリソースをエクスポートし、HCL コード形式で画面に出力します。

gcloud beta resource-config bulk-export \
  --project=PROJECT_ID \
  --resource-format=terraform

出力をディレクトリ構造に書き込む

プロジェクトの構成全体をパスに出力します。

gcloud beta resource-config bulk-export \
  --path=OUTPUT_DIRECTORY_NAME \
  --project=PROJECT_ID \
  --resource-format=terraform

--path フラグに、HCL コードの出力先を指定します。パス OUTPUT_DIRECTORY_NAME が存在しない場合は、パスを作成するかどうかを確認するプロンプトが表示されます。

コマンドを実行すると、各リソースの HCL コードが、次のディレクトリ構造内の別々の .tf ファイルに出力されます。

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

出力を 1 つのファイルに書き込む

出力を画面に表示しない場合や、個別の .tf ファイルを作成しない場合は、次の例に示すように、すべての出力を 1 つのファイルに書き込むことができます。

gcloud beta resource-config bulk-export --resource-format=terraform >> gcp_resources.tf

出力をフィルタリングする

一括エクスポート コマンドの出力をフィルタリングするには、リソースタイプを指定します。

フィルタリングするサポート対象のリソースタイプを一覧表示する

サポート対象のリソースタイプを一覧表示するには、gcloud beta resource-config list-resource-types コマンドを実行します。

gcloud beta resource-config list-resource-types

必要であれば、出力をファイルに書き込みます。

gcloud beta resource-config list-resource-types >> strings.txt

出力では、Compute Engine VM のリソースタイプが次のように表示されます。

KRM KIND: ComputeInstance

KRM KIND: 接頭辞は無視できます。

単一のリソースタイプをエクスポートする

ComputeInstance などの文字列を使用して、プロジェクトの特定のリソースタイプを HCL コード形式でエクスポートします。

gcloud beta resource-config bulk-export \
  --resource-types=RESOURCE_TYPE \
  --project=PROJECT_ID \
  --resource-format=terraform

--resource-types フラグには、出力するリソースタイプを指定します。

複数のリソースタイプをエクスポートする

VM インスタンスとファイアウォール ルールを HCL コード形式でエクスポートします。

gcloud beta resource-config bulk-export \
  --resource-types=ComputeFirewall,ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

エクスポートするリソースタイプをファイルに指定する

  1. tf-output という名前のディレクトリを作成します。

    cd && mkdir tf-output && cd tf-output
    
  2. types.txt という名前のファイルを作成し、リソースタイプのリストを追加します。次に例を示します。

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. --resource-types-file フラグを指定して gcloud beta resource-config bulk-export コマンドを実行します。

    gcloud beta resource-config bulk-export \
     --resource-types-file=types.txt \
     --path=tf-output \
     --project=PROJECT_ID \
     --resource-format=terraform
    

指定したリソースタイプがプロジェクトに含まれていない場合、コマンドは成功しますが、そのリソースタイプに関する出力はありません。

次のステップ