Esercitazione - Usare una condizione nei modelli di ARM
Informazioni su come distribuire le risorse di Azure in base alle condizioni in un modello di Azure Resource Manager (modello di ARM).
Nell'esercitazione Impostare l'ordine di distribuzione delle risorse si creano una macchina virtuale, una rete virtuale e alcune altre risorse dipendenti, tra cui un account di archiviazione. Invece di creare ogni volta un nuovo account di archiviazione, si consente agli utenti di scegliere tra creare un nuovo account di archiviazione e usarne uno esistente. Per raggiungere questo obiettivo, si definisce un parametro aggiuntivo. Se il valore del parametro è new, viene creato un nuovo account di archiviazione. In caso contrario, viene usato un account di archiviazione esistente con il nome specificato.
Questa esercitazione illustra le attività seguenti:
- Aprire un modello di avvio rapido
- Modificare il modello
- Distribuire il modello
- Pulire le risorse
Questa esercitazione illustra solo uno scenario di base relativo all'uso delle condizioni. Per altre informazioni, vedi:
- Struttura del file modello: condizione.
- Distribuire una risorsa in modo condizionale in un modello di Azure Resource Manager.
- Funzione modello: If.
- Funzioni di confronto per i modelli di Azure Resource Manager
Per un modulo Microsoft Learn riguardante le condizioni, vedere Gestire distribuzioni cloud complesse usando le funzionalità avanzate dei modelli di ARM.
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Prerequisiti
Per completare questo articolo, devi avere quanto segue:
Visual Studio Code con l'estensione Strumenti di Resource Manager. Vedere Guida di avvio rapido - Creare modelli di ARM con Visual Studio Code.
Per una maggiore sicurezza, usare una password generata per l'account amministratore della macchina virtuale. È possibile usare Azure Cloud Shell per eseguire il comando seguente in PowerShell o Bash:
openssl rand -base64 32
Per ulteriori informazioni, eseguire
man openssl rand
per aprire la pagina manuale.Azure Key Vault è progettato per proteggere chiavi crittografiche e altri segreti. Per ulteriori informazioni, consultare Esercitazione - Integrare Azure Key Vault nella distribuzione di modelli di ARM. È consigliabile anche aggiornare la password ogni tre mesi.
Aprire un modello di avvio rapido
Modelli di avvio rapido di Azure è un repository di modelli di Azure Resource Manager. Anziché creare un modello da zero, è possibile trovare un modello di esempio e personalizzarlo. Il modello usato in questa esercitazione è denominato Distribuire una VM Windows semplice.
In Visual Studio Code selezionare File>Apri file.
In Nome file incollare l'URL seguente:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Selezionare Apri per aprire il file.
Sono presenti sei risorse definite dal modello:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
È utile esaminare le informazioni di riferimento sul modello prima di personalizzare un modello.
Selezionare File>Salva con nome per salvare una copia del file con il nome azuredeploy.json nel computer locale.
Modificare il modello
Apportare due modifiche al modello esistente:
- Aggiungere un parametro per il nome dell'account di archiviazione. Gli utenti potranno specificare il nome di un nuovo account di archiviazione o di uno esistente.
- Aggiungere un nuovo parametro denominato
newOrExisting
. Questo parametro viene usato nella distribuzione per determinare se creare un nuovo account di archiviazione oppure usarne uno esistente.
Di seguito è riportata la procedura per apportare le modifiche:
Aprire azuredeploy.json in Visual Studio Code.
Sostituire i tre
variables('storageAccountName')
conparameters('storageAccountName')
nell'intero modello.Rimuovere la definizione di variabile seguente:
Aggiungere i due parametri seguenti all'inizio della sezione Parameters:
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
Premere ALT+MAIUSC+F per formattare il modello in Visual Studio Code.
La definizione aggiornata dei parametri si presenta come segue:
Aggiungere la riga seguente all'inizio della definizione dell'account di archiviazione.
"condition": "[equals(parameters('newOrExisting'),'new')]",
La condizione controlla il valore del parametro
newOrExisting
. Se il valore del parametro è new, con la distribuzione viene creato l'account di archiviazione.La definizione aggiornata dell'account di archiviazione si presenta come segue:
Aggiornare la proprietà
storageUri
della definizione di risorsa di macchina virtuale con il valore seguente:"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
Questa modifica è necessaria quando si usa un account di archiviazione esistente in un diverso gruppo di risorse.
Salvare le modifiche.
Distribuire il modello
Accedere a Cloud Shell.
Scegliere l'ambiente preferito selezionando PowerShell o Bash (per l'interfaccia della riga di comando) nell'angolo in alto a sinistra. Quando si cambia interfaccia, è necessario riavviare la shell.
Selezionare Carica/Scarica file e quindi Carica. Vedere l'immagine sopra riportata. Selezionare il file salvato nella sezione precedente. Dopo aver caricato il file, è possibile usare i comandi
ls
ecat
per verificare che il file sia stato caricato.quindi eseguire lo script di PowerShell seguente per distribuire il modello.
Importante
Il nome dell'account di archiviazione deve essere univoco in Azure. Il nome deve essere composto solo da lettere minuscole e numeri e non deve superare i 24 caratteri. Il nome dell'account di archiviazione è il nome del progetto a cui viene aggiunto store. Assicurarsi che il nome del progetto e il nome dell'account di archiviazione generato soddisfino i requisiti per il nome dell'account di archiviazione.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
Nota
La distribuzione non viene completata se
newOrExisting
è new, ma l'account di archiviazione con il nome specificato è già esistente.
Provare a ripetere la distribuzione con il parametro newOrExisting
impostato su existing e specificare un account di archiviazione esistente. Per creare prima un account di archiviazione, vedere Creare un account di archiviazione.
Pulire le risorse
Quando non sono più necessarie, eseguire la pulizia delle risorse di Azure distribuite eliminando il gruppo di risorse. Per eliminare il gruppo di risorse, selezionare Prova per aprire Cloud Shell. Per incollare lo script di PowerShell, fare clic con il pulsante destro del mouse sul riquadro della shell e quindi scegliere Incolla.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Passaggi successivi
In questa esercitazione è stato sviluppato un modello che consente agli utenti di scegliere tra creare un nuovo account di archiviazione e usarne uno esistente. Per informazioni su come recuperare segreti da Azure Key Vault e usarli come password nella distribuzione di modelli, vedere: