Esercitazione: Aggiungere output al modello di ARM

Questa esercitazione illustra come restituire un valore dal modello di Azure Resource Manager (modello di ARM). Gli output vengono usati quando è necessario un valore per una risorsa distribuita. Per completare l'esercitazione, sono necessari 7 minuti.

Prerequisiti

È consigliabile, ma non obbligatorio, completare l'esercitazione sulle variabili.

È necessario avere installato Visual Studio Code con l'estensione Strumenti di Resource Manager e Azure PowerShell o l'interfaccia della riga di comando di Azure (CLI). Per altre informazioni, vedere gli strumenti per i modelli.

Rivedere il modello

Al termine dell'esercitazione precedente, il modello includeva il codice JSON seguente:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Distribuisce un account di archiviazione, ma non restituisce informazioni relative ad esso. Può essere necessario acquisire le proprietà da una nuova risorsa in modo che siano disponibili in seguito per riferimento.

Aggiungere gli output

È possibile usare gli output per restituire i valori dal modello. Ad esempio, potrebbe essere utile ottenere gli endpoint per il nuovo account di archiviazione.

L'esempio seguente evidenzia la modifica apportata al modello per aggiungere un valore di output. Copiare l'intero file e sostituire il modello con il contenuto del file.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Ecco alcune importanti aspetti da considerare sul valore di output aggiunto.

Il tipo di valore restituito è impostato su objectobject, per indicare che restituisce un oggetto JSON.

Usa la funzione reference per ottenere lo stato di runtime dell'account di archiviazione. Per ottenere lo stato di runtime di una risorsa, si deve passare il nome o l'ID di una risorsa. In questo caso si usa la stessa variabile usata per creare il nome dell'account di archiviazione.

Infine, restituisce la primaryEndpoints proprietà dall'account di archiviazione.

Distribuire un modello

È ora possibile distribuire il modello ed esaminare il valore restituito.

Se non è stato ancora creato il gruppo di risorse, vedere Creare il gruppo di risorse. Nell'esempio si presuppone che la variabile templateFile sia stata impostata sul percorso del file modello, come illustrato nella prima esercitazione.

New-AzResourceGroupDeployment `
  -Name addoutputs `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS

Nell'output per il comando di distribuzione verrà visualizzato un oggetto simile all'esempio seguente solo se l'output è in formato JSON:

{
    "dfs": "https://storeluktbfkpjjrkm.dfs.core.windows.net/",
    "web": "https://storeluktbfkpjjrkm.z19.web.core.windows.net/",
    "blob": "https://storeluktbfkpjjrkm.blob.core.windows.net/",
    "queue": "https://storeluktbfkpjjrkm.queue.core.windows.net/",
    "table": "https://storeluktbfkpjjrkm.table.core.windows.net/",
    "file": "https://storeluktbfkpjjrkm.file.core.windows.net/"
}

Nota

Se la distribuzione non riesce, usare l'opzione verbose per ottenere informazioni sulle risorse che si stanno creando. Usare l'opzione debug per ottenere altre informazioni per il debug.

Esaminare il lavoro

Nelle ultime sei esercitazioni sono state completate numerose procedure. Dedichiamo qualche istante ad esaminare quanto svolto finora. È stato creato un modello con parametri facili da specificare. Il modello è riutilizzabile in ambienti diversi perché permette la personalizzazione e crea i valori necessari in modo dinamico. Restituisce anche informazioni sull'account di archiviazione che è possibile usare nello script.

A questo punto si esaminerà il gruppo di risorse e la cronologia di distribuzione.

  1. Accedere al portale di Azure.

  2. Nel menu di sinistra selezionare Gruppi di risorse.

  3. Selezionare il gruppo di risorse in cui è stata eseguita la distribuzione.

  4. A seconda dei passaggi eseguiti, dovrebbero essere presenti uno o più account di archiviazione nel gruppo di risorse,

  5. oltre a diverse distribuzioni riuscite nella cronologia. Selezionare il collegamento.

    Screenshot of the Azure portal showing the deployments link.

  6. Vengono visualizzate tutte le distribuzioni presenti nella cronologia. Selezionare la distribuzione denominata addoutputs.

    Screenshot of the Azure portal showing the deployment history.

  7. È possibile esaminare gli input.

    Screenshot of the Azure portal showing the deployment inputs.

  8. È possibile esaminare gli output.

    Screenshot of the Azure portal showing the deployment outputs.

  9. È possibile rivedere il modello.

    Screenshot of the Azure portal showing the deployment template.

Pulire le risorse

Se si intende passare all'esercitazione successiva, non è necessario eliminare il gruppo di risorse.

Se invece ci si ferma, è opportuno eliminare il gruppo di risorse.

  1. Nel portale di Azure selezionare Gruppi di risorse nel menu a sinistra.
  2. Digitare il nome del gruppo di risorse nel campo di testo Filtro per qualsiasi campo ... .
  3. Selezionare la casella accanto a myResourceGroup e selezionare myResourceGroup o il nome del gruppo di risorse.
  4. Selezionare Elimina gruppo di risorse nel menu in alto.

Passaggi successivi

In questa esercitazione è stato aggiunto un valore restituito al modello. Nell'esercitazione successiva verrà illustrato come esportare un modello e come usare parti del modello esportato nel tuo modello.