🗂
azurerm 4.x系をapplyした際のsubscription IDの指定についてメモ
現象
AKSを題材にterraformを勉強中に、Github Actions走らせたら以下のようなエラーが出てきました。
╷
│ Error: `subscription_id` is a required provider property when performing a plan/apply operation
│
│ with provider["registry.terraform.io/hashicorp/azurerm"],
│ on providers.tf line 20, in provider "azurerm":
│ 20: provider "azurerm" ***
│
╵
Azure learnのterraformサンプルだと以下のように"~>3.0"なのですが、
2025/1/15時点での最新の"4.15.0"にすると上記のエラーになります。
terraform {
required_version = ">=1.0"
required_providers {
azapi = {
source = "azure/azapi"
version = "~>1.5"
}
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0" # ここを"~>=4.15.0"
}
random = {
source = "hashicorp/random"
version = "~>3.0"
}
time = {
source = "hashicorp/time"
version = "0.9.1"
}
}
}
provider "azurerm" {
features {}
}
原因
terraformの公式のNoteに書いている通りでsubscription_idはplan or applyで必須になったというだけなのですが、サンプルコードには書いていないので少し不親切な気はします。
以下のようにsubscription_idをコードで直書きはあり得ないので、
provider "azurerm" {
features {}
subscription_id = "*************"
}
公式のnoteに書いている通りで、Azure CLIの実行時の環境変数"ARM_SUBSCRIPTION_ID"を設定するstepを追加することが基本的な選択肢になると思います。
以下、Github Actionsのstepです
- name: login to Azure for storage
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_STORAGE_TF_CREDENTIALS }}
- name: set subscription id
run: echo "ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)" >> $GITHUB_ENV
Discussion