こんにちは、クラウドエース編集部です。

ある日、twitterを眺めていると https://cloud.google.com/sdk/gcloud/reference/beta/resource-config/bulk-export で紹介されている gcloud beta resource-config bulk-export という見たことのないコマンドについて言及している方がいらっしゃったので早速使ってみました。

感想を先に述べておくと、例えば「VPC Networkだけに絞る」ようなresourceの範囲を指定できると実用的になると思います。

コマンド例

実際に次のように使ってみました

$ gcloud beta resource-config bulk-export --on-error=continue \
    --resource-format=terraform \
    --project=YOUR_PROJECT_ID > resources.tf

このコマンドはAsset Inventory APIを利用して取得したリソースをterraformのコードにするようで、文字通りプロジェクトの全てのresourceをterraformのコードにしてくれました。

しかし、筆者の感覚ではこれはやりすぎであり、大量のterraform化されたresourceを見せられてもそれをフィルタするだけで相当な労力です。

不必要だと思った一例を列挙すると

  • InternetへのDefault route
  • Diskのスナップショット
  • Default サービスアカウント

などなど、最初から当然のようにあるものまでterraformにされます。
これらもterraformで管理しているプロジェクトであれば有用なのかもしれませんが、きっと無いですね。
後から消すとしても、大量のterraformコードの中から不必要なものを省く労力は相当なものです。


GAになった時に期待していることは、resourceのtypeを指定してコード化する範囲を絞れることです。
Asset Inventory APIはresourceの種類を指定することで取得する対象を選択できるので、これと同じことができるようになると非常に実用的だと思います。


個人的に今後のアップデートに期待しているもののうちの1つになりました。
フィードバックはこちらに送ると良さそうなのでついでに紹介しておきます。
本来はIssue Trackerで管理されて欲しい気もしますが、Issue Trackerがまともに機能しているかというと…