2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

bitFlyerAdvent Calendar 2022

Day 12

Azure terrafyで簡単import

Last updated at Posted at 2022-12-11

Azure terrafyとは?

既存Azureリソースをterraformで管理下に置くためのツールです。
terraform公式としてはterraform importがありますが、これは事前にリソースを定義した.tfファイルが必要、また、tfstateを作成するだけでterrafyは構成ファイル(.tf)も作成します。
更に、terrafyではResource Group単位でのimportが可能です。(terraform importではRG単位ではできず、リソース1つ1つを指定する必要があります。)

参考:
https://qiita.com/koudaiii/items/10ae59a817abc438b71c
https://azure.github.io/aztfy/#1

Hands-on

Azureへの認証済、Azure CLI、aztfyのインストールは実施済とします。
How to install : https://github.com/Azure/aztfy#install

Terraform構成ファイルが存在していないディレクトリ上でaztfyを実行します。
ほしいリソースに対してEnterを押します。
また、resource名を変更することも可能です。

~/aztfy_test ❯ ls -a
.  ..
~/aztfy_test ❯ aztfy resource-group aztfy-resources

   Azure Terrafy

     aztfy-resources

    9 items
 
  |skip…

wでimportを開始します

   Azure Terrafy

  ⣷   Importing /subscriptions/xxxx-xxxx/resourceGroups/aztfy-resources...
  ...
  ...
  ...
  ...
  …

出力を確認してみます。

~/aztfy_test ❯ ls -a
.  ..  .terraform  .terraform.lock.hcl  aztfyResourceMapping.json  main.aztfy.tf  provider.tf  terraform.tfstate

このように.tfファイルとtfstateが非常に簡単に作成できます!

terrafyの使いどころ

https://azure.github.io/aztfy/#11 に以下のように書いてあるように、terrafyはconfigurationファイルをfor_each等を使用したり、moduleを使った書き方は目指していないようでした。シンプルなconfigurationファイルでも良いので作成したい、という場合に使うのがよさそうです。

Configuration files do not need to be elegent Modules do not need to be generated

module化した.tfファイルが存在しており、.tfファイルのリソース定義にしたがってtfstateを作成して欲しい、という時には工夫が必要かと思います。

terrafy後、moveブロックを使えばよいかもしれないです。
https://developer.hashicorp.com/terraform/language/modules/develop/refactoring#refactoring

もしくは手間になりますがterraform importを行う方法もあります。

~/aztfy_test ❯ terraform import module.test.azurerm_function_app.func /subscriptions/xxxx-xxxx/resourceGroups/xxxxx……

その他のツール

terrafy以外のimport用ツールも調べてみました。

・terraform add
v1.1の最終リリースで削除されたようです。
リソース間の依存関係を考慮せず1リソースだけ対象にするみたいです。

・Terrafy (Azure terrafyではなくterrafy)
構成ファイル、tfstate両方を作成してくれるが、.tfyというリソースの定義ファイルのようなものを事前に作成する必要があります。

・Terraformer
import後に構成ファイルの微調整が必要になる可能性があるようです。

※Azure terrafyは有効な構成ファイルを作成すること(作成された構成ファイルからのterraform planでの差異が無い、等)としているため、この点は違いになるかと思われます。

Automatically generate the valid Terraform configuration file:

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?