Condividi tramite


Esercitazione: Distribuire un modello di ARM locale

Informazioni su come distribuire un modello di Azure Resource Manager (modello di ARM) dal computer locale. Per completare l'esercitazione, sono necessari circa 8 minuti.

Questa è la prima esercitazione di una serie. Durante l'avanzamento della serie, è possibile modularizzare il modello creando un modello collegato, archiviare il modello collegato in un account di archiviazione, proteggere il modello collegato usando il token di firma di accesso condiviso e informazioni su come creare una pipeline DevOps per distribuire i modelli. Questa serie riguarda la distribuzione dei modelli. Per informazioni sullo sviluppo dei modelli, vedere le esercitazioni per principianti.

Ottenere gli strumenti

Assicurarsi di disporre degli strumenti necessari per distribuire i modelli.

Distribuzione dalla riga di comando

Per distribuire il modello, è necessario Azure PowerShell o l'interfaccia della riga di comando di Azure. Per le istruzioni di installazione, vedere:

Dopo aver installato Azure PowerShell o l'interfaccia della riga di comando di Azure, accedere per la prima volta. Per informazioni, vedere Accesso - PowerShell or Accesso - Interfaccia della riga di comando di Azure.

Editor (facoltativo)

I modelli sono file JSON. Per esaminare o modificare i modelli, è necessario un editor JSON valido. È consigliabile usare Visual Studio Code con l'estensione Strumenti di Resource Manager. Se è necessario installare questi strumenti, consultare Avvio rapido: Creare modelli di ARM con Visual Studio Code.

Rivedere il modello

Con il modello vengono distribuiti un account di archiviazione, un piano di servizio app e un'app Web. Se si è interessati alla creazione del modello, vedere Esercitazione sui modelli di avvio rapido. Tuttavia, non è necessario creare il modello per completare questa esercitazione.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11,
      "metadata": {
        "description": "Specify a project name that is used to generate resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify a location for the resources."
      }
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ],
      "metadata": {
        "description": "Specify the storage account type."
      }
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "Specify the Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
    "webAppName": "[format('{0}WebApp', parameters('projectName'))]",
    "appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2022-09-01",
      "name": "[variables('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": "2022-09-01",
      "name": "[variables('webAppName')]",
      "location": "[parameters('location')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
    }
  }
}

Importante

I nomi degli account di archiviazione devono essere univoci, di lunghezza compresa tra 3 e 24 caratteri e contenere solo numeri e lettere minuscole. La variabile del modello esempio storageAccountName combina il valore massimo di 11 caratteri del parametroprojectName con un valore uniqueString di 13 caratteri.

Salvare una copia del modello nel computer locale con l'estensione JSON, ad esempio azuredeploy.json. Questo modello verrà distribuito più avanti nell'esercitazione.

Accedere ad Azure

Per iniziare a usare Azure PowerShell o l'interfaccia della riga di comando di Azure per distribuire un modello, accedere con le credenziali di Azure.

Se si hanno più sottoscrizioni di Azure, selezionare quella da usare. Sostituire [SubscriptionID/SubscriptionName] e le parentesi quadre [] con le informazioni sulla sottoscrizione:

Set-AzContext [SubscriptionID/SubscriptionName]

Crea gruppo di risorse

Quando si distribuisce un modello, si specifica un gruppo di risorse per le risorse. Prima di eseguire il comando di distribuzione, creare il gruppo di risorse usando l'interfaccia della riga di comando di Azure oppure Azure PowerShell. Per scegliere tra Azure PowerShell e l'interfaccia della riga di comando di Azure, selezionare le schede nella sezione del codice seguente. Gli esempi dell'interfaccia della riga di comando in questo articolo sono scritti per la shell Bash.

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup `
  -Name $resourceGroupName `
  -Location "Central US"

Distribuire un modello

Usare una o entrambe le opzioni di distribuzione per distribuire il modello.

$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroupDeployment `
  -Name DeployLocalTemplate `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile $templateFile `
  -projectName $projectName `
  -verbose

Per informazioni dettagliate sulla distribuzione del modello con Azure PowerShell, vedere Distribuire le risorse con i modelli di Azure Resource Manager e Azure PowerShell.

Pulire le risorse

Per pulire le risorse distribuite, eliminare il gruppo di risorse.

  1. Nel portale di Azure selezionare Gruppo di risorse nel menu a sinistra.
  2. Immettere il nome del gruppo di risorse nel campo Filtra per nome.
  3. Selezionare il nome del gruppo di risorse.
  4. Selezionare Elimina gruppo di risorse nel menu in alto.

Passaggi successivi

Si è appreso come distribuire un modello locale. Nell'esercitazione successiva si separa il modello in un modello principale e in un modello collegato. Si apprenderà anche come archiviare e proteggere il modello collegato.