【Azure】- Azure Export for Terraformを試す

に公開

執筆日

2025/6/25

Azure Export for Terraform

2025年5月1日、Azure PortalにTerraformのExport機能がパブリックプレビューとして登場しました。他にもエクスポートできるツールがないか探していたところ、Azure Export for Terraformを見つけました。実際にどのようなものか検証してみました。

https://zenn.dev/headwaters/articles/d5ee93eb1bf166


Azure Export for Terraformとは?

Azure Export for Terraformは、Azure上で既に作成されているリソースをTerraformコードとしてエクスポートするためのツールです。これにより、手動で作成したリソースをTerraformで管理するためのコードを簡単に生成できます。


Azure Export for Terraformの使い方

Azure Export for Terraformは、Azure CLIを利用して実行します。以下に基本的な手順を紹介します。

1. 必要なツールの準備

  • Azure CLI
    Azure CLIがインストールされていることを確認してください。未インストールの場合は、公式ドキュメントを参考にインストールしてください。

  • aztfexport
    以下のコマンドでインストールできます。

winget install aztfexport

2. Azure CLIでログイン

まず、Azure CLIを使ってAzureアカウントにログインします。

az login -t "テナント名"

3. リソースグループを指定してエクスポート

Azure Export for Terraformでは、特定のリソースグループ内のリソースをエクスポートできます。以下のコマンドを実行します。

aztfexport resource-group RESOURCE_GROUP_NAME

コマンドを実行すると、以下のような画面が表示されます。
エクスポート時に新しいフォルダを作成する場合は「N」、作成しない場合は「Y」を入力します。

情報が出力されたら、「w」を入力して処理を進めます。

エクスポート完了のメッセージが表示されるまで待ち、その後任意のキーを押してください。

エクスポート先のフォルダを確認します。

4. エクスポートされたコードの確認

エクスポートされたコードは、通常以下のような構成になっています。

  1. .terraform フォルダー
    役割: Terraformプロバイダーや依存関係の情報が格納されるディレクトリ。
  2. .terraform.lock.hcl
    役割: Terraformのプロバイダー依存関係のバージョンを固定するためのロックファイル。
  3. aztfexportResourceMapping
    役割: JSON形式でリソースのマッピング情報を含むファイル。エクスポートされたリソースの詳細を確認可能。
  4. main.aztfexport
    役割: Azureリソースの定義が記述されたTerraformコードファイル。
  5. provider
    役割: Azureプロバイダー設定を記述したファイル。Azureリソースとの接続情報を含む。
  6. terraform
    役割: Terraformのプロジェクト設定ファイル(主に基本設定やワークスペース関連)。
  7. terraform.tfstate
    役割: Terraformが管理するリソースの状態情報を記録するファイル。

これらのファイルをTerraformプロジェクトとして利用できます。

注意点

  1. 完全なコード生成ではない場合がある
    一部のリソースや設定がエクスポートされない場合があります。その場合は、手動でコードを補完する必要があります。

  2. 状態管理の移行に注意
    既存リソースをTerraformで管理する場合、状態ファイル(terraform.tfstate)の管理に注意が必要です。誤ってリソースを削除しないよう、慎重に操作しましょう。


まとめ

Azure Export for Terraformは、AzureリソースをTerraformコードに変換できる非常に便利なツールです。初心者でも簡単に利用でき、既存リソースを効率的にTerraformで管理できるようになります。特に、AzureポータルやCLIで作成したリソースをIaC(Infrastructure as Code)へ移行したい場合には、大きな助けとなるでしょう。

ヘッドウォータース

Discussion