Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Terraform consente di definire, visualizzare in anteprima e distribuire l'infrastruttura cloud. Con Terraform è possibile creare file di configurazione usando la sintassi HCL. La sintassi HCL consente di specificare il provider di servizi cloud, ad esempio Azure, e gli elementi che costituiscono l'infrastruttura cloud. Dopo aver creato i file di configurazione, si crea un piano di esecuzione che consente di visualizzare in anteprima le modifiche dell'infrastruttura prima della distribuzione. Dopo aver verificato le modifiche, è possibile applicare il piano di esecuzione per distribuire l'infrastruttura.
AzAPI v2.0 e versioni successive include un set di funzioni provider per la creazione e l'analisi di ID risorsa Azure. Le funzioni del provider vengono eseguite in fase di pianificazione all'interno della configurazione di Terraform e non richiedono una ricerca dell'origine dati o una chiamata di rete. Riducono la complessità del codice quando la configurazione deve costruire o scomporre gli ID risorsa.
Note
Le funzioni del provider richiedono Terraform 1.8 o versione successiva.
Funzioni del provider disponibili
| Function | Descrizione |
|---|---|
build_resource_id |
Costruisce un ID della risorsa da un ID padre, un tipo di risorsa e un nome di risorsa. Supporta sia le risorse di primo livello che le risorse annidate. |
extension_resource_id |
Costruisce un ID risorsa di estensione da un ID risorsa di base, un tipo di risorsa e i nomi delle risorse. |
management_group_resource_id |
Costruisce un ID risorsa con ambito gruppo di gestione. |
parse_resource_id |
Analizza un ID risorsa Azure nei suoi componenti (ID della sottoscrizione, nome del gruppo di risorse, spazio dei nomi del provider, nome della risorsa e altro ancora). |
resource_group_resource_id |
Costruisce un ID risorsa con ambito gruppo di risorse da un ID sottoscrizione, un nome del gruppo di risorse, un tipo di risorsa e nomi di risorse. |
subscription_resource_id |
Costruisce un ID della risorsa a livello di sottoscrizione. |
tenant_resource_id |
Crea un ID risorsa specifico per il tenant. |
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Configurare Terraform: se non è già stato fatto, configurare Terraform usando una delle opzioni seguenti:
Verificare che la configurazione dichiari AzAPI v2.0 o versione successiva e Terraform 1.8 o versione successiva:
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" {}
Analizzare un ID risorsa con parse_resource_id
Usare parse_resource_id per scomporre un ID risorsa Azure esistente nei singoli componenti. La funzione è utile quando è necessario l'ID sottoscrizione, il nome del gruppo di risorse o il nome della risorsa da una risorsa gestita altrove nella tua configurazione o passata come variabile.
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
}
La funzione restituisce un oggetto con questi campi:
-
id— ID risorsa completo -
name— il nome della risorsa -
parent_id— ID risorsa della risorsa padre -
parts— una mappa di tutti i segmenti ID di risorsa -
provider_namespace(ad esempio,Microsoft.Storage) resource_group_nameresource_group_idsubscription_id-
type(ad esempio,Microsoft.Storage/storageAccounts)
Creare un ID con ambito di gruppo di risorse con resource_group_resource_id
Usare resource_group_resource_id quando è necessario fare riferimento a un ID risorsa per una risorsa non gestita in Terraform (ad esempio, una risorsa esistente passata come variabile) o quando si vuole costruire un ID stimabile prima della creazione della risorsa.
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"
}
}
Il parametro resource names accetta un elenco per supportare i tipi di risorse annidati. Ad esempio, per costruire un ID subnet:
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]
)
}
Costruire un ID con ambito di sottoscrizione utilizzando subscription_resource_id
Usare subscription_resource_id per le risorse con ambito a livello di sottoscrizione, ad esempio gruppi di risorse o assegnazioni di criteri:
locals {
resource_group_id = provider::azapi::subscription_resource_id(
var.subscription_id,
"Microsoft.Resources/resourceGroups",
[var.resource_group_name]
)
}
Costruire un ID con ambito a livello di gruppo di gestione con management_group_resource_id
Usare management_group_resource_id per le risorse con ambito gruppo di gestione, ad esempio assegnazioni di criteri e assegnazioni di ruolo:
locals {
mg_policy_id = provider::azapi::management_group_resource_id(
var.management_group_name,
"Microsoft.Authorization/policyAssignments",
[var.policy_assignment_name]
)
}
Costruisci un ID risorsa di estensione con extension_resource_id
Usare extension_resource_id per le risorse di estensione associate a un'altra risorsa, ad esempio blocchi o assegnazioni di ruolo in una risorsa specifica:
locals {
lock_id = provider::azapi::extension_resource_id(
azurerm_storage_account.example.id,
"Microsoft.Authorization/locks",
[var.lock_name]
)
}
Creare un ID risorsa con build_resource_id
Usare build_resource_id quando un ID risorsa padre definisce l'ambito e non è necessario specificare separatamente la sottoscrizione o il gruppo di risorse. Questa funzione deduce l'ambito dall'ID padre:
locals {
subnet_id = provider::azapi::build_resource_id(
azurerm_virtual_network.example.id,
"Microsoft.Network/virtualNetworks/subnets",
var.subnet_name
)
}
Confrontare con gli approcci alla sorgente dati
Le funzioni del provider sono preferibili rispetto alle origini dati per la costruzione e l'analisi degli ID perché:
- Viene eseguito interamente in fase di pianificazione senza chiamate di rete.
- Non aggiungere risorse allo stato di Terraform.
- Sono deterministici e non richiedono l'ordinamento di
depends_on.
Usare l'origine azapi_resource dati quando è necessario consultare le proprietà attive di una risorsa, non solo costruire o interpretare il rispettivo ID.