LoginSignup
13
9

More than 3 years have passed since last update.

TerraformerのためのTerraformer

Last updated at Posted at 2019-07-10

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というらしい。この言葉、使っていきたい。 

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9