🕊️

Terraformerを利用してGCPクラウド環境をコード化する

2023/12/27に公開

はじめに

Terraformerは、HashiCorpが提供するオープンソースのInfrastructure as Code(IaC)ツールで、様々なクラウド環境(Google Cloud、AWS、Azureなど)のリソースをTerraformのコードとしてエクスポートできるツールです。
今回はTerraformerを使ってTerraformのコードを出力する手順についてまとめました。

インストール

ここではWindows環境にTerraformerをインストールする方法を紹介します。

  1. terraformerのリリースページから必要なプロバイダのexeファイルをダウンロードします。
  2. ダウンロードしたファイルをterraformer.exeにリネームして任意のフォルダに配置し、パスを通します。
  3. terraformer --version でバージョンが表示されることを確認します。

 
Go言語がインストールされている場合はこちらの方法でもインストール可能です。

git clone https://github.com/GoogleCloudPlatform/terraformer.git
cd terraformer
go build -o terraformer.exe

https://github.com/GoogleCloudPlatform/terraformer#installation

Terraformerの実行

  1. 任意のフォルダを作成してmain.tfを作成します。
    プロバイダやバージョンは環境に合わせて変更してください。こちらはGCPの実行例です。
main.tf
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 4.38.0"
    }
  }
  required_version = ">= 1.0.11"
}

 
2. 作成したフォルダでterraform initを実行し、必要なプラグインをインストールします。

terraform init

 
3. terraformerを実行してインフラコードを取得します。

terraformer import google --resources="*" --projects=<project_name>

--resourcesでリソースを取得するサービスの種類を指定します。
--resources="*"で全てのサービスのリソースを取得します。
--resources=gcs,cloudbuildの様に記載することで、特定のリソースのみを取得します。

listオプションを付けて実行することで、指定可能なリソール名を一覧表示できます。

> terraformer import google list --projects=<project_name>
addresses
autoscalers
backendBuckets
backendServices
bigQuery
cloudFunctions
cloudbuild
cloudsql
cloudtasks
dataProc
disks
dns
externalVpnGateways
firewall
forwardingRules
gcs
gke

 
terraformer importを実行すると、generatedというフォルダが作成され、フォルダ内にTerraformのコードが生成されます。

generated
└─google
    └─<project_name>
        ├─addresses
        │  └─global
        │          provider.tf
        │          terraform.tfstate
        │          
        ├─autoscalers
        │  └─global
        │          provider.tf
        │          terraform.tfstate
        │          
        ├─backendBuckets
        │  └─global
        │          provider.tf
        │          terraform.tfstate
        │          variables.tf
        │          

まとめ

今回はGCPを使用しましたが、他のクラウドプロバイダでも同様の手順で利用可能です。
より詳細な情報や設定については、公式のドキュメントを参照してください。

レスキューナウテックブログ

Discussion