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.
In questa guida introduttiva si creerà un gruppo di risorse di Azure e un libro mastro riservato usando Terraform. Il libro mastro riservato di Azure è un servizio completamente gestito che fornisce un registro a prova di manomissione per l'archiviazione di dati sensibili. Si basa sul confidential computing di Azure, che usa ambienti di esecuzione attendibili basati su hardware per proteggere i dati dalle minacce anche quando è in uso. Questo libro mastro è progettato per mantenere la riservatezza e l'integrità dei dati archiviati, rendendolo ideale per i casi d'uso che richiedono elevati livelli di protezione dei dati. Le risorse create in questo script includono il libro mastro riservato di Azure e un gruppo di risorse di Azure.
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, è necessario creare un piano di esecuzione che consenta di visualizzare in anteprima le modifiche apportate all'infrastruttura prima che vengano distribuite. Dopo aver verificato le modifiche, è possibile applicare il piano di esecuzione per distribuire l'infrastruttura.
- Generare un nome di animale domestico casuale per il gruppo di risorse.
- Creare un gruppo di risorse di Azure con il nome generato.
- Recuperare la configurazione client di Azure corrente.
- Generare una stringa casuale per il nome del libro mastro riservato di Azure.
- Creare un libro mastro riservato di Azure con il nome generato e assegnarlo al gruppo di risorse.
- Assegnare un'entità servizio basata su Azure AD al libro mastro riservato.
- Contrassegna il libro mastro riservato come esempio.
- Restituire il nome del gruppo di risorse, il nome del libro mastro riservato, il tipo di libro mastro riservato e il nome del ruolo del libro mastro riservato.
- Specificare la versione richiesta di Terraform e i provider necessari.
- Definire il provider di Azure senza funzionalità aggiuntive.
- Definire le variabili per il prefisso del nome del gruppo di risorse, la posizione del gruppo di risorse, il nome del libro mastro riservato, il tipo di libro mastro riservato e il nome del ruolo del libro mastro riservato.
Prerequisiti
Creare un account Azure con una sottoscrizione attiva. È possibile creare un account gratuito.
Implementare il codice Terraform
Nota
Il codice di esempio per questo articolo si trova nel repository GitHub di Azure Terraform. È possibile visualizzare il file di log contenente i risultati del test delle versioni correnti e precedenti di Terraform.
Vedere altri articoli e codice di esempio che illustrano come usare Terraform per gestire le risorse di Azure:
Creare una directory in cui testare ed eseguire il codice Terraform di esempio e impostarla come directory corrente.
Creare un file denominato
main.tf
e inserire il codice seguente:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } data "azurerm_client_config" "current" { } resource "random_string" "azurerm_confidential_ledger_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_confidential_ledger" "example" { name = coalesce(var.confidential_ledger_name, "ledger-${random_string.azurerm_confidential_ledger_name.result}") resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location ledger_type = var.confidential_ledger_type azuread_based_service_principal { principal_id = data.azurerm_client_config.current.object_id tenant_id = data.azurerm_client_config.current.tenant_id ledger_role_name = var.confidential_ledger_role_name } tags = { IsExample = "True" } }
Creare un file denominato
outputs.tf
e inserire il codice seguente:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "confidential_ledger_name" { value = azurerm_confidential_ledger.example.name } output "confidential_ledger_type" { value = azurerm_confidential_ledger.example.ledger_type } output "confidential_ledger_role_name" { value = azurerm_confidential_ledger.example.azuread_based_service_principal[0].ledger_role_name }
Creare un file denominato
providers.tf
e inserire il codice seguente:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Creare un file denominato
variables.tf
e inserire il codice seguente:variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "confidential_ledger_name" { type = string description = "The name of the confidential ledger resource. The value will be randomly generated if blank." default = "" } variable "confidential_ledger_type" { type = string default = "Public" validation { condition = contains(["Public", "Private"], var.confidential_ledger_type) error_message = "The confidential ledger type value must be one of the following: Public, Private." } description = "Type of the confidential ledger." } variable "confidential_ledger_role_name" { type = string default = "Administrator" description = "Role name for the confidential ledger." }
Inizializzare Terraform
Per inizializzare la distribuzione di Terraform, eseguire terraform init. Questo comando scarica il provider di Azure necessario per gestire le risorse di Azure.
terraform init -upgrade
Punti principali:
- Il parametro
-upgrade
aggiorna i plug-in del provider necessari alla versione più recente conforme ai vincoli di versione della configurazione.
Creare un piano di esecuzione Terraform
Eseguire terraform plan per creare un piano di esecuzione.
terraform plan -out main.tfplan
Punti principali:
- Il comando
terraform plan
consente di creare un piano di esecuzione, ma non di eseguirlo. Determina invece le azioni necessarie per creare la configurazione specificata nei file di configurazione. Questo modello consente di verificare se il piano di esecuzione corrisponde alle aspettative prima di apportare modifiche alle risorse effettive. - Il parametro
-out
facoltativo consente di specificare un file di output per il piano. L'uso del parametro-out
garantisce che il piano esaminato sia esattamente quello che viene applicato.
Applicare un piano di esecuzione Terraform
Eseguire terraform apply per applicare il piano di esecuzione all'infrastruttura cloud.
terraform apply main.tfplan
Punti principali:
- Il comando
terraform apply
di esempio presuppone che in precedenza sia stato eseguitoterraform plan -out main.tfplan
. - Se è stato specificato un nome file diverso per il parametro
-out
, usare lo stesso nome file nella chiamata aterraform apply
. - Se non è stato usato il parametro
-out
, chiamareterraform apply
senza parametri.
Verificare i risultati
Interfaccia della riga di comando di Azure
Eseguire az confidential-ledger show
per visualizzare il libro mastro riservato di Azure.
az confidentialledger show --ledger-name <ledger_name> --resource-group <resource_group_name>
È necessario sostituire <ledger_name>
con il nome del libro mastro riservato di Azure e <resource_group_name>
con il nome del gruppo di risorse.
Pulire le risorse
Quando le risorse create tramite Terraform non sono più necessarie, eseguire i passaggi seguenti:
Eseguire terraform plan e specificare il flag
destroy
.terraform plan -destroy -out main.destroy.tfplan
Punti principali:
- Il comando
terraform plan
consente di creare un piano di esecuzione, ma non di eseguirlo. Determina invece le azioni necessarie per creare la configurazione specificata nei file di configurazione. Questo modello consente di verificare se il piano di esecuzione corrisponde alle aspettative prima di apportare modifiche alle risorse effettive. - Il parametro
-out
facoltativo consente di specificare un file di output per il piano. L'uso del parametro-out
garantisce che il piano esaminato sia esattamente quello che viene applicato.
- Il comando
Eseguire terraform apply per applicare il piano di esecuzione.
terraform apply main.destroy.tfplan
Risolvere i problemi di Terraform in Azure
Risolvere i problemi comuni relativi all'uso di Terraform in Azure.
Passaggi successivi
Vedere altri articoli sul libro mastro riservato di Azure.