Condividi tramite


Esercitazione: Aggiungere funzioni del modello al modello di Azure Resource Manager

Questa esercitazione illustra come aggiungere funzioni del modello al modello di Azure Resource Manager (modello di ARM). Le funzioni consentono di costruire i valori in modo dinamico. Oltre alle funzioni del modello fornite dal sistema, è anche possibile creare funzioni definite dall'utente. Per completare l'esercitazione, sono necessari 7 minuti.

Prerequisiti

È consigliabile, ma non obbligatorio, completare l'esercitazione sui parametri.

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

Rivedere il modello

Alla fine dell'esercitazione precedente, il modello aveva il file JSON seguente:

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

Si supponga di aver hardcoded la posizione dell'account di archiviazione di Azure in eastus, ma è necessario distribuirla in un'altra area. È necessario aggiungere un parametro per aggiungere flessibilità al modello e consentire di avere una posizione diversa.

Usare la funzione

Se è stata completata l'esercitazione sui parametri, è stata usata una funzione . Quando si è aggiunto "[parameters('storageName')]" , si è usata la funzione parameters. Le parentesi quadre indicano che la sintassi racchiusa tra parentesi è un'espressione del modello. Resource Manager risolve la sintassi anziché considerarla come valore letterale.

Le funzioni aggiungono flessibilità al modello perché consentono di ottenere i valori in modo dinamico durante la distribuzione. In questa esercitazione si usa una funzione per ottenere il percorso di distribuzione del gruppo di risorse.

Nell'esempio seguente sono evidenziate le modifiche da apportare per aggiungere un parametro denominato location. Il valore predefinito del parametro chiama la funzione resourceGroup. Questa funzione restituisce un oggetto con informazioni sul gruppo di risorse distribuito. Una delle proprietà dell'oggetto è una proprietà location. Quando si usa il valore predefinito, l'account di archiviazione e il gruppo di risorse hanno la stessa posizione. Le risorse all'interno di un gruppo hanno posizioni diverse.

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": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "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]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Distribuire il modello

Nelle esercitazioni precedenti è stato creato un account di archiviazione negli Stati Uniti orientali, ma il gruppo di risorse viene creato negli Stati Uniti centrali. Per questa esercitazione si crea un account di archiviazione nella stessa area del gruppo di risorse. Usare il valore predefinito per location, in modo che non sia necessario specificare il valore di tale parametro. È necessario specificare un nuovo nome per l'account di archiviazione perché si sta creando un account di archiviazione in una posizione diversa. Usare store2, ad esempio, come prefisso anziché store1.

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 addlocationparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{new-unique-name}"

Nota

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

Verificare la distribuzione

Per verificare la distribuzione, esplorare il gruppo di risorse nel portale di Azure.

  1. Accedere al portale di Azure.
  2. Nel menu di sinistra selezionare Gruppi di risorse.
  3. Selezionare la casella a sinistra di myResourceGroup e selezionare myResourceGroup.
  4. Selezionare il gruppo di risorse creato. Il nome predefinito è myResourceGroup.
  5. Si noti che l'account di archiviazione distribuito e il gruppo di risorse hanno la stessa posizione.

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 filtro per qualsiasi campo... testo.
  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 si usa una funzione per definire il valore predefinito per un parametro. In questa serie di esercitazioni si continua a usare le funzioni. Alla fine della serie si aggiungono funzioni a ogni sezione del modello.