Esercitazione: Distribuire estensioni di macchina virtuale con modelli di ARM
Questo articolo illustra come usare le estensioni di macchina virtuale di Azure per eseguire attività di configurazione e automazione post-distribuzione nelle VM di Azure. Sono disponibili molte estensioni diverse delle macchine virtuali da usare con macchine virtuali di Azure. In questa esercitazione si distribuisce un'estensione di script personalizzati da un modello di Azure Resource Manager (modello di ARM) per eseguire uno script PowerShell in una macchina virtuale Windows. Lo script installa un server Web nella VM.
Questa esercitazione illustra le attività seguenti:
- Preparare uno script di PowerShell
- Aprire un modello di avvio rapido
- Modificare il modello
- Distribuire il modello
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Prerequisiti
Per completare questo articolo, devi avere quanto segue:
Visual Studio Code con l'estensione Strumenti di Resource Manager. Vedere Guida di avvio rapido - Creare modelli di ARM con Visual Studio Code.
Per una maggiore sicurezza, usare una password generata per l'account amministratore della macchina virtuale. È possibile usare Azure Cloud Shell per eseguire il comando seguente in PowerShell o Bash:
openssl rand -base64 32
Per ulteriori informazioni, eseguire
man openssl rand
per aprire la pagina manuale.Azure Key Vault è progettato per proteggere chiavi crittografiche e altri segreti. Per altre informazioni, vedere Esercitazione: Integrare Azure Key Vault nella distribuzione del modello di Resource Manager. È consigliabile anche aggiornare la password ogni tre mesi.
Preparare uno script di PowerShell
È possibile usare uno script inline di PowerShell o un file di script. Questa esercitazione illustra come usare un file di script. Uno script di PowerShell con il contenuto seguente è condiviso da GitHub:
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Se si sceglie di pubblicare il file in una posizione personalizzata, aggiornare l'elemento fileUri
del modello più avanti in questa esercitazione.
Aprire un modello di avvio rapido
Modelli di avvio rapido di Azure è un repository di modelli di Azure Resource Manager. Anziché creare un modello da zero, è possibile trovare un modello di esempio e personalizzarlo. Il modello usato in questa esercitazione è denominato Distribuire una VM Windows semplice.
In Visual Studio Code selezionare File>Apri file.
Nella casella Nome file incollare l'URL seguente:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Selezionare Apri per aprire il file. Il modello definisce cinque risorse:
Microsoft.Compute/virtualMachines.
Prima di personalizzare il modello è utile acquisirne una conoscenza di base.
Salvare una copia del file nel computer locale con il nome azuredeploy.json selezionando File>Salva con nome.
Modificare il modello
Aggiungere una risorsa estensione di macchina virtuale al modello esistente con il contenuto seguente:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2021-04-01",
"name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
"location": "[parameters('location')]",
"dependsOn": [
"[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
],
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.7",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
],
"commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
}
}
}
Per altre informazioni su questa definizione di risorsa, vedere il materiale di riferimento dell'estensione. Di seguito sono illustrati alcuni elementi importanti.
name
: poiché la risorsa di estensione è una risorsa figlio dell'oggetto macchina virtuale, il nome deve avere il prefisso del nome della macchina virtuale. Vedere Impostare il nome e il tipo per le risorse figlio.dependsOn
: creare la risorsa di estensione dopo aver creato la macchina virtuale.fileUris
: i percorsi in cui vengono archiviati i file di script. Se si sceglie di non usare la posizione indicata, è necessario aggiornare i valori.commandToExecute
: questo comando richiama lo script.
Per usare lo script inline, rimuovere fileUris
e aggiornare commandToExecute
in:
powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)
Questo script inline aggiorna anche il contenuto di iisstart.html.
È anche necessario aprire la porta HTTP in modo da poter accedere al server Web.
Trovare
securityRules
nel modello.Aggiungere la regola seguente accanto a default-allow-3389.
{ "name": "AllowHTTPInBound", "properties": { "priority": 1010, "access": "Allow", "direction": "Inbound", "destinationPortRange": "80", "protocol": "Tcp", "sourcePortRange": "*", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*" } }
Distribuire il modello
Per la procedura di distribuzione, vedere la sezione Distribuire il modello di Esercitazione: Creare modelli arm con risorse dipendenti. È consigliabile usare una password generata per l'account amministratore della macchina virtuale. Vedere la sezione Prerequisiti di questo articolo.
In Cloud Shell usare il comando seguente per recuperare l'indirizzo IP pubblico della nuova macchina virtuale:
(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress
Incollare l'indirizzo IP in un Web browser. Si aprirà la pagina iniziale predefinita di Internet Information Services (IIS):
Pulire le risorse
Quando non sono più necessarie, eseguire la pulizia delle risorse di Azure distribuite eliminando il gruppo di risorse.
- Nel portale di Azure selezionare Gruppo di risorse nel riquadro a sinistra.
- Immettere il nome del gruppo di risorse nella casella Filtra per nome.
- Selezionare il nome del gruppo di risorse. Nel gruppo di risorse vengono visualizzate sei risorse.
- Selezionare Elimina gruppo di risorse nel menu in alto.
Passaggi successivi
In questa esercitazione sono state distribuite una macchina virtuale e un'estensione di macchina virtuale. L'estensione ha installato il server Web IIS nella macchina virtuale. Per informazioni su come usare l'estensione del database SQL di Azure per importare un file BACPAC, vedere: