一般社団法人 全国個人事業主支援協会

COLUMN コラム

こちらを使うことで、Azure上に展開されているリソースをTerraformのコードとして出力することができるようになります。手っ取り早く手でリソースをポータル上で作成して、それをTerraformのコードとして落とすことで、簡単にリソースの管理ができるようになります。そこからモジュールに分けてリファクタリングすることで保守性も担保することができそうです。

以下のリンクを参考にしながら、1つのリソースグループ に入っているリソース群をTerraformのコードにしてみたいと思います。

https://learn.microsoft.com/ja-jp/azure/developer/terraform/azure-export-for-terraform/export-first-resources?tabs=azure-cli

まずはazログインをしてリソースにつなげていきます。

テラフォームファイルは、カレントディレクトリに吐き出されるので、ディレクトリを移動しておきます。

cd ~/Documents/src/private/terraform/out-rg-pwa

エクスポートを実行します。

aztfexport resource-group rg-pwa

画面では、リソースが正しく認識されているかを確認するだけです。実際にエクスポートする場合はwを押します。

エクスポートすると、 これらファイルが出力されます。

takumi@ ~/Documents/src/private/terraform/out-rg-pwa$ tree
.
├── aztfexportResourceMapping.json
├── import.tf
├── main.tf
├── provider.tf
├── terraform.tf
└── terraform.tfstate

main.tfをマスクしてのせます。

resource "azurerm_resource_group" "res-0" {
  location = "eastasia"
  name     = "rg-pwa"
}
resource "azurerm_key_vault" "res-1" {
  location            = "eastasia"
  name                = "kv-xiao"
  resource_group_name = "rg-pwa"
  sku_name            = "standard"
  tenant_id           = "xxx"
}
resource "azurerm_key_vault_secret" "res-2" {
  key_vault_id = "xxx"
  name         = "sc-xiao-client-secret"
  tags = {
    file-encoding = "utf-8"
  }
  value = ""
  depends_on = [
    azurerm_key_vault.res-1,
  ]
}
resource "azurerm_key_vault_secret" "res-3" {
  key_vault_id = "xxx"
  name         = "sc-xiao-vm-ssh-key"
  tags = {
    file-encoding = "utf-8"
  }
  value = ""
  depends_on = [
    azurerm_key_vault.res-1,
  ]
}
resource "azurerm_static_site" "res-4" {
  app_settings = {
    B2C_CLIENT_ID = "xxx"
    B2C_SECRET    = "xxx"
  }
  location            = "eastasia"
  name                = "swa-pwa"
  resource_group_name = "rg-pwa"
}

ここからわかる情報としては、それぞれのリソースにはres-番号 というエイリアスが当てられていると言うところです。

参考にした公式のところでは、tf planして状態に差がないところまで確認していますが、今回は割愛しています。

The following two tabs change content below.

小田 匠

最新記事 by 小田 匠 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア