created: 2022-09-16T01:21:46.070Z

gcloud の bulk-export と terraform generate-import で tf ファイルと import コマンドを生成する。

こちらで紹介されている GCP リソースの terraform ファイルの自動生成をする。

今回はすべて自動生成したものを使うのではなく、一部使いたい部分だけつまんで使うという使い方をした。terraform import をするためにドキュメントをあっちこっち読むのが面倒なので、このツールが生成してくれる import.sh が使いたいという動機もあった。

tfファイルの生成

$ export OUTPATH=generated
$ gcloud beta resource-config bulk-export \
    --project=$GCP_PROJECT_ID \
    --resource-format=terraform \
    --path=$OUTPATH

途中 GCP の API を有効にしていいですかプロンプトがでるので OK を選択。

API [cloudasset.googleapis.com] is required to continue, but is not enabled on project [proj-123456]. Would you like to enable and retry (this will take a few minutes)? (y/N)? y

けっこう時間がかかる。

import.sh の生成

こちらはすぐ終了する。

$ gcloud beta resource-config terraform generate-import $OUTPATH \
    --output-script-file=$OUTPATH/import.sh \
    --output-module-file=$OUTPATH/modules.tf

使う

たとえば pubsub を新しく terraform import したいときはこんな雑に grep するとリソースのIDがでてきてくれる。

$ cat generated/import.sh | grep pubsub
terraform import module.projects-proj-123456-PubSubTopic.google_pubsub_topic.bigquery_jobcompleted projects/proj-123456/topics/bigquery-jobcompleted

もちろん tf ファイルの実装も参考にできる。

$ ack bigquery-jobcompleted ./generated/
generated/projects/proj-123456/PubSubTopic/bigquery-jobcompleted.tf
2:  name    = "bigquery-jobcompleted"