ひでぼ~blog

C#ときどきゲーム

TerraformでAzure Static Web Appsのリソースを作ってみる

Azure Static Web Appsが正式にリリースされたので試してみました。

準備

まずTerraformのインストールから。 公式サイトからzipをDLし、解凍して出てきたexeを適当なフォルダに置いてPATHを通しました。 www.terraform.io

次にAzure CLIをインストール。 Power Shellを管理者で実行して、次のコマンドでAzure CLIをインストールしました。

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

learn.hashicorp.com

Terraformを実行してみる

main.tf、variables.tfを作ります。こちらを参考にさせてもらいました。 zenn.dev

# main.tf
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.60.0"  # <- azurerm_static_site が対応されたバージョン 2.60 を指定
    }
  }
}

provider "azurerm" {
  features {}
}

# リソースグループ作成
resource "azurerm_resource_group" "main" {
  name = "rg-${var.identifier}"
  location = var.location
}

# Azure Static Web App作成
resource "azurerm_static_site" "main" {
  name = "stapp-${var.identifier}"
  resource_group_name = azurerm_resource_group.main.name
  location = var.swa_location
}
# variables.tf
variable "identifier" {
  type = string
}

variable "location" {
  type = string
  default = "japaneast"
}

variable "swa_location" {
  type = string
  default = "eastasia"
}

main.tf、variables.tfができたらターミナルからterraformのコマンドをinit, plan, applyの順に実行していきます。

PS C:\Project\TerraformSample> terraform init
PS C:\Project\TerraformSample> terraform plan
PS C:\Project\TerraformSample> terraform apply

terraform plan, terraform applyの実行時に作成するリソースのIDを聞かれるので適当な名前を付けます。今回はTerraformSampleとしました。これはのちに作成されるリソース名に含まれます。 terraform applyを実行した後に"Apply complete! Resources: 2 added, 0 changed, 0 destroyed."と表示されればリソースの作成が終わったみたいです。

※terraform planを実行する前に、"az login"を実行してAzureの認証を済ませておく必要があります。

Azure Portalで確認してみる

まずResource Groupを確認。rg-TerraformSampleという名前のResource Groupが作られてました。 f:id:hideb3:20210530215548p:plain

そしてStatic Web Apps。ちゃんと作ったResource Groupの中にstapp-TerraformSampleという名前で作られてました。 f:id:hideb3:20210530215829p:plain

所感

普段Azureにリソースを作るときはAzure Portalから画面ポチポチで作っていました。TerraformなどのInfrastructure as Codeはなんか難しそうという抵抗があって使ってなかったのですが、そんなことありませんでした。今後リソースを作るときはこっちのやり方でやっていきたいですね。 他にもARMテンプレートを使ったやり方とも比較してみたいところです。

参考

learn.hashicorp.com