こちらを使うことで、Azure上に展開されているリソースをTerraformのコードとして出力することができるようになります。手っ取り早く手でリソースをポータル上で作成して、それをTerraformのコードとして落とすことで、簡単にリソースの管理ができるようになります。そこからモジュールに分けてリファクタリングすることで保守性も担保することができそうです。
以下のリンクを参考にしながら、1つのリソースグループ に入っているリソース群をTerraformのコードにしてみたいと思います。
まずは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して状態に差がないところまで確認していますが、今回は割愛しています。