Condividi tramite


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.

  1. In Visual Studio Code selezionare File>Apri file.

  2. 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
    
  3. Selezionare Apri per aprire il file. Il modello definisce cinque risorse:

  4. 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.

  1. Trovare securityRules nel modello.

  2. 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):

Screenshot della pagina iniziale di Internet Information Services.

Pulire le risorse

Quando non sono più necessarie, eseguire la pulizia delle risorse di Azure distribuite eliminando il gruppo di risorse.

  1. Nel portale di Azure selezionare Gruppo di risorse nel riquadro a sinistra.
  2. Immettere il nome del gruppo di risorse nella casella Filtra per nome.
  3. Selezionare il nome del gruppo di risorse. Nel gruppo di risorse vengono visualizzate sei risorse.
  4. 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: