Terraform azurerm provider version 4 setzt die Subscription ID als Mandatory Attribute
Das Verhalten ist identisch bei terraform und opentofu. Im Folgenden wird opentofu bzw. die tofu cli genutzt.
Sämtlicher Beispiel-Code und Skripte finden sich auf GitHub.
Die Skripte sind speziell fuer UNIX-Systeme geschrieben und erwarten eine bash oder z-Shell.
Mit der Version 4 des terraform azurerm providers, wurde die
Subscription ID aus Azure zum Pflichtfeld zur Erstellung neuer Ressourcen.
Dies betrifft nicht nur den tofu apply
,
sondern auch bereits das tofu plan
.
Vorher wurde bei Nutzung der Azure CLI immer die aktive Subscription aus dem User-Kontext genutzt.
Beim Fehlen der Subscription ID im Provider Block wirft der
Aufruf von tofu plan
nun die folgende Fehlermeldung:
Planning failed. OpenTofu encountered an error while generating this plan.
╷
│ Error: `subscription_id` is a required provider property when performing a plan/apply operation
│
│ with provider["registry.opentofu.org/hashicorp/azurerm"],
│ on main.tf line 11, in provider "azurerm":
│ 11: provider "azurerm" {
Das einfachste Vorgehen ist natürlich, die Subscription ID direkt im Provider Block zu setzen:
provider "azurerm" {
subscription_id = "cf4ea9ae-cfef-4132-a5a1-c507a07a3371"
features {}
}
Alternativ dazu kann auch auf eine Umgebungsvariable mit dem Namen
ARM_SUBSCRIPTION_ID
gesetzt werden.
export ARM_SUBSCRIPTION_ID=cf4ea9ae-cfef-4132-a5a1-c507a07a3371
Um ein ähnliches Verhalten wie vorm Update der Version 4 beizubehalten, kann man sich via Azure CLI und dem CLI-Tool jq die aktuelle Subscription ID aus dem aktiven User-Kontext filtern und diese dann als Umgebungsvariable setzen.
export ARM_SUBSCRIPTION_ID=$(az account show | jq -r .id)