Terraformerというツールを最近見つけて、
「えぇ!!めちゃ便利やん!!」と少々感動したのでご紹介します。
Terraformer
現存しているリソースの.tf
ファイルとtfstate
を自動作成してくれるCLIツールです1。
レポジトリはこちら。
インストール
Homebrewでインストールできます。
brew install terraformer
その他のインストール方法はこちら。
利用する前にディレクトリ(~/.terraform.d/plugins/{darwin,linux}_amd64/
)を作成し、ここにプロバイダをインストールしておく必要があります。
$ pwd
/Users/<user-name>/.terraform.d/plugins/darwin_amd64
$ wget https://releases.hashicorp.com/terraform-provider-google/2.10.0/terraform-provider-google_2.10.0_darwin_amd64.zip
$ unzip terraform-provider-google_2.10.0_darwin_amd64.zip
使い方
以下プロバイダとしてGCPを利用した例です。
AWSなど他のプロバイダについても似たような感じだと思います(未検証)。
指定したリソースのファイルを作る
コマンド一つで楽ちん。--resources
オプションで、.tf
ファイルとtfstate
を作成したいリソースの指定します。
terraformer import google --resources=cloudFunctions --zone=asia-northeast1-a --projects=<your-project-id>
複数選択することで、一気に作れます。プロジェクトも複数選択できます。
terraformer import google --resources=cloudFunctions,gke,gcs,instances --zone=asia-northeast1-a --projects=<project-A>,<project-B>
作成された.tf
ファイルとtfstate
は./generated/<provider>/<project-name>/<resources>
にあります。
ローカルにファイルを作成する前に確認したい
import
の代わりにplan
を使います。
terraformer plan google --resources=cloudFunctions --zone=asia-northeast1-a --projects=<your-project-id>
すると./generated/<provider>/<project-name>/terraformer
にplan.json
というJSONファイルが作成されるので、ここから確認ができます。
必要であればJSONファイルを変更して、.tf
ファイルを作成します。
terraformer import plan ./generated/<provider>/<project-name>/terraformer/plan.json
メリット/デメリット
個人の感想です。ツッコミがあればコメントをいただきたいです。
メリット
コードを書かなくていい
自動作成されるので、無論書く必要がないです。
フォーマットが一定なので見やすい
人が書くコードでは、デフォルトの設定として書かれないような設定も書いてくれるので、
リソース単位でコードを読む分には読みやすいと感じました。
デメリット
生成されるコードが0.12に対応していない
terraform 0.12upgrade
でほとんど対応できると思いますし、これから置き換えられるような気がします(issue)。
リソースごとなので、依存を意識してリソースを立てる必要がある
.tf
ファイルが作成された後の話です。ここでようやく頭を使うので、許容範囲かとも思います。
終わりに
issueを見てみると、IAMやAWSのリソースについても開発が進んでいるようで、これからもっと便利になりそうです。
参考
-
reverse Terraformというらしい。この言葉、使っていきたい。 ↩