TerraformerのためのTerraformer

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>/terraformerplan.jsonというJSONファイルが作成されるので、ここから確認ができます。

必要であればJSONファイルを変更して、.tfファイルを作成します。


terraformer import plan ./generated/<provider>/<project-name>/terraformer/plan.json


メリット/デメリット

個人の感想です。ツッコミがあればコメントをいただきたいです。


メリット


コードを書かなくていい

自動作成されるので、無論書く必要がないです。


フォーマットが一定なので見やすい

人が書くコードでは、デフォルトの設定として書かれないような設定も書いてくれるので、

リソース単位でコードを読む分には読みやすいと感じました。


デメリット


生成されるコードが0.12に対応していない

terraform 0.12upgradeでほとんど対応できると思いますし、これから置き換えられるような気がします(issue)。


リソースごとなので、依存を意識してリソースを立てる必要がある

.tfファイルが作成された後の話です。ここでようやく頭を使うので、許容範囲かとも思います。


終わりに

issueを見てみると、IAMやAWSのリソースについても開発が進んでいるようで、これからもっと便利になりそうです。


参考





  1. reverse Terraformというらしい。この言葉、使っていきたい。