Condividi tramite


Esercitazione: Usare modelli di avvio rapido di Azure

Modelli di avvio rapido di Azure è un repository di modelli forniti dalla community. È possibile usare i modelli di esempio nello sviluppo di modelli. In questa esercitazione si trova una definizione di risorsa del sito Web e la si aggiunge al proprio modello. Il completamento di questa istruzione richiede 12 minuti .

Prerequisiti

È consigliabile completare l'esercitazione sui modelli esportati, ma non è obbligatorio.

È necessario avere Visual Studio Code e Azure PowerShell o l'interfaccia della riga di comando di Azure. Per ulteriori informazioni, vedere Strumenti per 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": {
    "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]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Questo modello funziona per la distribuzione di account di archiviazione e piani di servizio app, ma potrebbe essere necessario aggiungere un sito Web. È possibile usare modelli predefiniti per individuare rapidamente il codice JSON necessario per la distribuzione di una risorsa.

Trova modello

  1. Aprire i modelli di avvio rapido di Azure

  2. Selezionare il riquadro con il titolo Distribuire un'app Web Linux di base. Se hai problemi a trovarlo, ecco il collegamento diretto.

  3. Selezionare Sfoglia in GitHub.

  4. Selezionare azuredeploy.json.

  5. Esaminare il modello. Cercare la risorsa Microsoft.Web/sites.

    Avvio rapido per i modelli di Resource Manager: sito Web

Rivedere il modello esistente

Unire il modello di avvio rapido con il modello esistente:

{
  "$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]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2025-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ],
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Il nome dell'app Web deve essere univoco in Azure. Per impedire la presenza di nomi duplicati, la webAppPortalName variabile viene aggiornata da "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]" a "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]".

Aggiungere una virgola alla fine della Microsoft.Web/serverfarms definizione per separare la definizione della risorsa dalla Microsoft.Web/sites definizione.

In questa nuova risorsa sono disponibili alcune funzionalità importanti.

Ha un elemento denominato dependsOn impostato sul piano di servizio app. Questa impostazione è obbligatoria perché il piano di servizio app deve esistere prima della creazione dell'app Web. L'elemento dependsOn indica a Resource Manager come ordinare le risorse per la distribuzione.

La serverFarmId proprietà usa la funzione resourceId . Questa funzione ottiene l'identificatore univoco per una risorsa. In questo caso, ottiene l'identificatore univoco per il piano di servizio dell'applicazione. L'app Web è associata a un piano di servizio app specifico.

Distribuire un modello

Usare l'interfaccia della riga di comando di Azure o Azure PowerShell per distribuire un modello.

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

New-AzResourceGroupDeployment `
  -Name addwebapp `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS `
  -webAppName demoapp

Annotazioni

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

Pulire le risorse

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

Se ti fermi ora, potresti voler eliminare il gruppo di risorse.

  1. Nel portale di Azure selezionare Gruppi di risorse dal menu a sinistra.
  2. Digitare il nome del gruppo di risorse nel campo di testo Filtra 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 dal menu in alto.

Passaggi successivi

Si è appreso come usare un modello di avvio rapido per lo sviluppo di modelli. Nell'esercitazione successiva si aggiungono tag alle risorse.