Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Terraform ermöglicht die Definition, Vorschau und Bereitstellung der Cloudinfrastruktur. Mithilfe von Terraform erstellen Sie Konfigurationsdateien mit der HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter ( z. B. Azure ) und die Elemente angeben, aus denen Ihre Cloudinfrastruktur besteht. Nach der Erstellung Ihrer Konfigurationsdateien erstellen Sie einen Ausführungsplan, mit dem Sie eine Vorschau Ihrer Infrastrukturänderungen anzeigen können, bevor diese bereitgestellt werden. Nachdem Sie die Änderungen überprüft haben, wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.
AzAPI v2.0 und höher enthält eine Reihe von providerfunktionen zum Erstellen und Analysieren Azure Ressourcen-IDs. Anbieterfunktionen werden zur Planzeit innerhalb der Terraform-Konfiguration ausgeführt und benötigen keine Datenquellensuche oder einen Netzwerkanruf. Sie reduzieren die Codekomplexität, wenn Ihre Konfiguration Ressourcen-IDs erstellen oder dekompilieren muss.
Note
Anbieterfunktionen erfordern Terraform 1.8 oder höher.
Verfügbare Anbieterfunktionen
| Function | Beschreibung |
|---|---|
build_resource_id |
Erstellt eine Ressourcen-ID aus einer übergeordneten ID, einem Ressourcentyp und einem Ressourcennamen. Unterstützt sowohl Top-Level- als auch geschachtelte Ressourcen. |
extension_resource_id |
Erstellt eine Erweiterungsressourcen-ID aus einer Basisressourcen-ID, einem Ressourcentyp und Ressourcennamen. |
management_group_resource_id |
Erstellt eine Ressourcen-ID im Bereich der Verwaltungsgruppe. |
parse_resource_id |
Analysiert eine Azure Ressourcen-ID in die Komponententeile (Abonnement-ID, Ressourcengruppenname, Anbieternamespace, Ressourcenname usw.). |
resource_group_resource_id |
Erstellt eine ressourcengruppenbezogene Ressourcen-ID aus einer Abonnement-ID, ressourcengruppennamen, Ressourcentyp und Ressourcennamen. |
subscription_resource_id |
Erstellt eine ressourcenspezifische Abonnement-ID. |
tenant_resource_id |
Erstellt eine Mandanten-spezifische Ressourcen-ID. |
Voraussetzungen
- Azure-Abonnement: Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
Terraform konfigurieren: Wenn Sie dies noch nicht getan haben, konfigurieren Sie Terraform mit einer der folgenden Optionen:
Stellen Sie sicher, dass Ihre Konfiguration AzAPI v2.0 oder höher und Terraform 1.8 oder höher deklariert:
terraform {
required_version = ">= 1.8"
required_providers {
azapi = {
source = "Azure/azapi"
version = "~> 2.0"
}
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
}
}
provider "azurerm" {
features {}
}
provider "azapi" {}
Analysieren einer Ressourcen-ID mit parse_resource_id
Verwenden Sie parse_resource_id, um eine vorhandene Azure Ressourcen-ID in die einzelnen Komponenten zu dekompilieren. Die Funktion ist nützlich, wenn Sie die Abonnement-ID, den Ressourcengruppennamen oder den Ressourcennamen aus einer ressource benötigen, die an anderer Stelle in Ihrer Konfiguration verwaltet oder als Variable übergeben wird.
locals {
storage_id_parts = provider::azapi::parse_resource_id(
"Microsoft.Storage/storageAccounts",
azurerm_storage_account.example.id
)
}
output "subscription_id" {
value = local.storage_id_parts.subscription_id
}
output "resource_group_name" {
value = local.storage_id_parts.resource_group_name
}
output "storage_account_name" {
value = local.storage_id_parts.name
}
Die Funktion gibt ein Objekt mit den folgenden Feldern zurück:
-
id— die vollständige Ressourcen-ID -
name— der Ressourcenname -
parent_id— die Ressourcen-ID der übergeordneten Ressource -
parts— eine Abbildung aller Ressourcen-ID-Segmente -
provider_namespace(z. B.Microsoft.Storage) resource_group_nameresource_group_idsubscription_id-
type(z. B.Microsoft.Storage/storageAccounts)
Erstellen einer ressourcengruppenbezogenen ID mit resource_group_resource_id
Verwenden Sie diese Option resource_group_resource_id , wenn Sie auf eine Ressourcen-ID für eine Ressource verweisen müssen, die Sie nicht in Terraform verwalten (z. B. eine vorhandene Ressource, die als Variable übergeben wurde), oder wenn Sie eine vorhersagbare ID vor der Ressourcenerstellung erstellen möchten.
variable "subscription_id" {
type = string
}
variable "existing_resource_group" {
type = string
}
variable "existing_storage_account" {
type = string
}
locals {
storage_account_id = provider::azapi::resource_group_resource_id(
var.subscription_id,
var.existing_resource_group,
"Microsoft.Storage/storageAccounts",
[var.existing_storage_account]
)
}
# Reference the pre-existing storage account without a data source lookup
resource "azapi_resource_action" "regenerate_key" {
type = "Microsoft.Storage/storageAccounts@2023-01-01"
resource_id = local.storage_account_id
action = "regenerateKey"
method = "POST"
body = {
keyName = "key1"
}
}
Der Parameter "Ressourcennamen" akzeptiert eine Liste zur Unterstützung geschachtelter Ressourcentypen. So erstellen Sie beispielsweise eine Subnetz-ID:
locals {
subnet_id = provider::azapi::resource_group_resource_id(
var.subscription_id,
var.resource_group_name,
"Microsoft.Network/virtualNetworks/subnets",
[var.vnet_name, var.subnet_name]
)
}
Erstellen Sie eine ID, die auf das Abonnement beschränkt ist, mit subscription_resource_id
Verwenden Sie subscription_resource_id für Ressourcen auf Abonnementebene, wie Ressourcengruppen oder Richtlinienzuweisungen.
locals {
resource_group_id = provider::azapi::subscription_resource_id(
var.subscription_id,
"Microsoft.Resources/resourceGroups",
[var.resource_group_name]
)
}
Erstellen einer verwaltungsgruppenbezogenen ID mit management_group_resource_id
Verwenden Sie management_group_resource_id für Ressourcen, die im Verwaltungsbereich von Gruppen liegen, wie Richtlinienzuweisungen und Rollenzuweisungen.
locals {
mg_policy_id = provider::azapi::management_group_resource_id(
var.management_group_name,
"Microsoft.Authorization/policyAssignments",
[var.policy_assignment_name]
)
}
Erstellen einer Erweiterungsressourcen-ID mit extension_resource_id
Verwenden Sie extension_resource_id, um Erweiterungsressourcen anzugeben, die an eine andere Ressource angefügt sind, z. B. Sperren oder Rollenzuweisungen für eine bestimmte Ressource:
locals {
lock_id = provider::azapi::extension_resource_id(
azurerm_storage_account.example.id,
"Microsoft.Authorization/locks",
[var.lock_name]
)
}
Erstellen einer Ressourcen-ID mit build_resource_id
Verwenden Sie diese Option build_resource_id , wenn eine übergeordnete Ressourcen-ID den Bereich bestimmt und Sie kein Abonnement oder eine Ressourcengruppe separat angeben müssen. Diese Funktion leitet den Gültigkeitsbereich von der übergeordneten ID ab:
locals {
subnet_id = provider::azapi::build_resource_id(
azurerm_virtual_network.example.id,
"Microsoft.Network/virtualNetworks/subnets",
var.subnet_name
)
}
Vergleich mit Datenquellenansätzen
Anbieterfunktionen sind für die ID-Konstruktion und das Parsing vorzuziehen, da sie:
- Läuft vollständig zur geplanten Zeit ohne Netzwerkanrufe.
- Fügen Sie keine Ressourcen zum Terraform-Zustand hinzu.
- Sind deterministisch und erfordern
depends_onkeine Sortierung.
Verwenden Sie azapi_resource als Datenquelle, wenn Sie die Live-Eigenschaften einer Ressource lesen müssen, nicht nur die ID erstellen oder analysieren.