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"