Esercitazione: Usare una condizione nei modelli di Azure Resource Manager

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.

Diagramma dell'uso di una condizione nel modello di Resource Manager

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, vedere:

Per un modulo Learn che copre le condizioni, vedere Gestire distribuzioni cloud complesse usando le funzionalità avanzate del modello di Resource Manager.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Prerequisiti

Per completare l'esercitazione di questo articolo, sono necessari gli elementi seguenti:

Aprire un modello di avvio rapido

Modelli di avvio rapido di Azure è un repository di modelli di 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.

  1. In Visual Studio Code selezionare File>Apri file.

  2. In Nome file incollare l'URL seguente:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Selezionare Apri per aprire il file.

  4. Sono presenti sei risorse definite dal modello:

    È utile esaminare le informazioni di riferimento sul modello prima di personalizzare un modello.

  5. 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:

  1. Aprire azuredeploy.json in Visual Studio Code.

  2. Sostituire le tre occorrenze di variables('storageAccountName') con parameters('storageAccountName') nell'intero modello.

  3. Rimuovere la definizione di variabile seguente:

    Screenshot con le definizioni di variabile evidenziate che è necessario rimuovere.

  4. 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:

    Usare una condizione in Resource Manager

  5. 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:

    Screenshot che mostra la definizione aggiornata dell'account di archiviazione.

  6. 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.

  7. Salvare le modifiche.

Distribuire il modello

  1. Accedere a Cloud Shell.

  2. 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.

    Caricare file in Cloud Shell nel portale di Azure

  3. 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 e cat per verificare che il file sia stato caricato.

  4. 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

    Se newOrExisting è new, ma l'account di archiviazione con il nome specificato esiste già, la distribuzione ha esito negativo.

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: