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. Nelle esercitazioni successive della serie si modularizzerà il modello creando un modello collegato, si archivierà il modello collegato in un account di archiviazione e si proteggerà il modello collegato usando un token di firma di accesso condiviso nonché si apprenderà 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
Per iniziare, verificare di disporre degli strumenti necessari per distribuire i modelli.
Distribuzione dalla riga di comando
Per distribuire il modello, è necessario usare l'interfaccia della riga di comando di Azure oppure Azure PowerShell. Per le istruzioni di installazione, vedere:
- Installare Azure PowerShell
- Installare l'interfaccia della riga di comando di Azure in Windows
- Installare l'interfaccia della riga di comando di Azure in Linux
- Installare l'interfaccia della riga di comando di Azure in macOS
Dopo aver installato Azure PowerShell o l'interfaccia della riga di comando di Azure, assicurarsi di 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 controllare/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, è possibile eseguire l'esercitazione sui modelli di avvio rapido. Tuttavia, questo passaggio non è necessario 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.
Connect-AzAccount
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 che conterrà 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. Selezionare le schede nella sezione di codice seguente per scegliere tra Azure PowerShell e l'interfaccia della riga di comando di Azure. 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
Eliminare le risorse distribuite eliminando il gruppo di risorse.
- Nel portale di Azure selezionare Gruppo di risorse nel menu a sinistra.
- Immettere il nome del gruppo di risorse nel campo Filtra per nome.
- Selezionare il nome del gruppo di risorse.
- Selezionare Elimina gruppo di risorse nel menu in alto.
Passaggi successivi
Si è appreso come distribuire un modello locale. Nell'esercitazione successiva il modello verrà separato in un modello principale e un modello collegato e verrà illustrato come archiviare e proteggere il modello collegato.