以前Terraformを一から作成しAzureリソースを作成する手段や、既存リソースを参照し、Terraformにて追加リソースを作成する手段について書きました。
本記事ではAzure Export for Terraformを利用して、既存AzureリソースをTerraformに取り込む方法について解説します。
Azure Export for Terraformとは
Azure上の既存リソースをTerraformファイルに取り込むことが可能なツールです。
前提
Azure Export for Terraform用のツールを事前にインストールする必要がございます。
実行手順
今回は例として以下リソースグループ内のリソースをエクスポートする場合の例の記載致します。
Azureにサインインする
今回はAzure CLIにてAzureへサインインを行います。
az login --tenant "Tenant ID"
aztfexportの実行
以下コマンドを実行し、エクスポートを実行します。
aztfexport resource-group "Resource Group名"
※今回はリソースグループ指定でエクスポートしていますが、リソース単体で指定する場合は以下コマンドを実行します。
aztfexport resource "Resource ID"
エクスポートされるリソースが表示されます。 必要に応じてリソースの選択をしてください。
※今回Files、Blob等は作成していないため、スキップ状態のまま「w (import)」を実行します。
完了すると以下のように表示されるため、任意のキーを押下します。
定義ファイルが作成されていることの確認
コマンド実行ディレクトリ上に以下ファイルが作成されていることを確認します。
- import.tf
- main.tf
- provider.tf
- terraform.tf
【import.tf】
import { id = "/subscriptions/<Subscription ID>/resourceGroups/nishiyamas-tf-rg" to = azurerm_resource_group.res-0 } import { id = "/subscriptions/<Subscription ID>/resourceGroups/nishiyamas-tf-rg/providers/Microsoft.Storage/storageAccounts/<ストレージアカウント名>" to = azurerm_storage_account.res-1 }
【main.tf】
resource "azurerm_resource_group" "res-0" { location = "japaneast" name = "nishiyamas-tf-rg" tags = { } } resource "azurerm_storage_account" "res-1" { account_replication_type = "LRS" account_tier = "Standard" allow_nested_items_to_be_public = false cross_tenant_replication_enabled = false location = "japaneast" name = "<ストレージアカウント名>" resource_group_name = "nishiyamas-tf-rg" tags = { } depends_on = [ azurerm_resource_group.res-0, ] }
【provider.tf】
provider "azurerm" { features { } }
【 terraform.tf】
terraform { backend "local" {} required_providers { azurerm = { source = "hashicorp/azurerm" version = "3.65.0" } } }
結果の確認
正常にエクスポートができているかの確認を行います。
Terraformプロバイダの更新
以下のコマンドを実行して、Terraformプロバイダを更新します。
terraform init --upgrade
成功すると「Terraform has been successfully initialized!」と表示されます。
エクスポート結果の確認
以下のコマンドを実行し、エクスポート結果を確認します。
terraform plan
「No changes. Your infrastructure matches the configuration.」と表示されていれば正常にエクスポートできている状態となります。
おわりに
本記事を最後までお読みいただき、ありがとうございます。
本記事がTerraformを使用する際の参考となれば幸いです。