Azure Resource Manager (ARM) è il sistema che sta alla base dell'intera infrastruttura di Microsoft Azure e consente la creazione e la configurazione di qualsiasi risorsa. Un template ARM è rappresentato nel formato JSON e permette di essere inoltrato all'infrastruttura tramite script PowerShell o da DevOps per automatizzare i processi di deployment, senza intervenire manualmente.
Tra i task che più frequentemente dobbiamo effettuare c'è sicuramente quello della creazione di un web site. In questo script si vuole proporre un template ARM contenente le configurazioni minime più frequenti, fermo restando che la documentazione ufficiale fornisce maggiori dettagli. Nello specifico dobbiamo utilizzare il tipo Microsoft.Web/serverfarms per la creazione di un server plan, dettagli disponibili a questo indirizzo https://docs.microsoft.com/en-us/azure/templates/microsoft.web/serverfarms Successivamente dobbiamo creare il sito tramite Microsoft.Web/sites con questa documentazione https://docs.microsoft.com/en-us/azure/templates/microsoft.web/sites. Solitamente impostiamo lo stack da usare e alcune impostazioni per alzare il livello di sicurezza e di prestazioni.
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string" } }, "variables": { "siteName": "[parameters('name')]", "location": "[resourceGroup().location]", "servicePlanId": "[resourceId('Microsoft.Web/serverFarms', variables('siteName'))]" }, "resources": [ { "type": "Microsoft.Web/serverfarms", "apiVersion": "2018-02-01", "name": "[variables('siteName')]", "location": "[variables('location')]", "sku": { "name": "S1" }, "kind": "app", "properties": {} }, { "type": "Microsoft.Web/sites", "apiVersion": "2018-11-01", "name": "[variables('siteName')]", "location": "[variables('location')]", "kind": "app", "dependsOn": [ "[variables('servicePlanId')]" ], "properties": { "serverFarmId": "[variables('servicePlanId')]", "clientAffinityEnabled": false, "httpsOnly": true, "siteConfig": { "webSocketsEnabled": true, "alwaysOn": true, "http20Enabled": true, "minTlsVersion": "1.2", "ftpsState": "Disabled", "appSettings": [ { "name": "Key1", "value": "value" } ], "metadata": [ { "name": "CURRENT_STACK", "value": "dotnetcore" } ] } } } ] }
Nello script usiamo un parametro di ingresso per indicare il nome, mentre il resto viene automaticamente calcolato. Sul site indichiamo di usare .NET Core, disattiviamo l'accesso FTP, abilitiamo HTTP2 e forziamo il livello di HTTPS.
Questo è solamente un punto di partenza ma è già sufficiente per il deployment di un applicativo web.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Scaling per app con Azure App Service
Modificare una variabile d'ambiente di un deployment di Kubernetes
Azure Functions e OpenAPI: la coppia perfetta!
Personalizzare la creazione dell'utenze Azure B2C tramite API connector
Commentare una issue associata ad una pull request tramite un workflow di GitHub
Associare Application Insights ad una Web App tramite Azure ARM
YARP: un reverse proxy in ASP.NET Core
Ottimizzare la concorrenza dinamicamente con le Azure Function
devConf 2022
Eseguire query in parallelo con Entity Framework Core and ASP.NET Core
Utilizzare proprietà di tipo DateOnly con EF Core 6
Serializzare e deserializzare un tipo TimeOnly con System.Text.Json
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Nasce oggi ufficialmente Project Spartan, un nuovo browser per il Web moderno! https://aspit.co/win10-next #Windows10
- Verificare che un oggetto JavaScript abbia una determinata proprietà
- Come si sviluppa per il web moderno? Cosa sono le PWA? Posso usare React? Angular? Blazor?Modern web vuol dire solo front-end? Ti aspettiamo oggi dalle 14 per #PWAConf #aspilive Agenda, iscrizioni e live dalle 14:00 su => https://aspit.co/PWAConf-20
- Whidbey, Yukon e Longhorn su MSDN
- Eseguire una chiamata asincrona durante la validazione di una form in Blazor