Come personalizzare una macchina virtuale Windows in AzureHow to customize a Windows virtual machine in Azure

Per configurare macchine virtuali (VM) in modo rapido e coerente, di norma è consigliabile una qualche forma di automazione.To configure virtual machines (VMs) in a quick and consistent manner, some form of automation is typically desired. Un approccio comune per personalizzare una macchina virtuale Windows consiste nell'usare l'estensione script personalizzata per Windows.A common approach to customize a Windows VM is to use Custom Script Extension for Windows. In questa esercitazione si apprenderà come:In this tutorial you learn how to:

  • Usare l'estensione dello script personalizzata per installare IISUse the Custom Script Extension to install IIS
  • Creare una macchina virtuale che usi l'estensione dello script personalizzataCreate a VM that uses the Custom Script Extension
  • Visualizzare un sito IIS in esecuzione dopo l'applicazione dell'estensioneView a running IIS site after the extension is applied

Avviare Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell è una shell gratuita che può essere eseguita direttamente nel portale di Azure.The Azure Cloud Shell is a free shell that you can run directly within the Azure portal. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.It has common Azure tools preinstalled and configured to use with your account. Fare clic sul pulsante Cloud Shell nel menu nel riquadro in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper-right of the Azure portal.

Cloud ShellCloud Shell

Il pulsante avvia una shell interattiva che è possibile usare per eseguire tutti i passaggi in questo argomento:The button launches an interactive shell that you can use to run all of the steps in this topic:

Screenshot che mostra la finestra di Cloud Shell nel portaleScreenshot showing the Cloud Shell window in the portal

Se si sceglie di installare e usare PowerShell in locale, per questa esercitazione è necessario il modulo Azure PowerShell versione 3.6 o successiva.If you choose to install and use the PowerShell locally, this tutorial requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Se si esegue PowerShell in locale, è anche necessario eseguire Login-AzureRmAccount per creare una connessione con Azure.If you are running PowerShell locally, you also need to run Login-AzureRmAccount to create a connection with Azure.

Panoramica dell'estensione script personalizzataCustom script extension overview

L'estensione script personalizzata scarica ed esegue gli script sulle macchine virtuali di Azure.The Custom Script Extension downloads and executes scripts on Azure VMs. Questa estensione è utile per la configurazione post-distribuzione, l'installazione di software o qualsiasi altra attività di configurazione o gestione.This extension is useful for post deployment configuration, software installation, or any other configuration / management task. Gli script possono essere scaricati dall'archiviazione di Azure o da GitHub, oppure possono essere forniti al portale di Azure durante il runtime dell'estensione.Scripts can be downloaded from Azure storage or GitHub, or provided to the Azure portal at extension run time.

L'estensione script personalizzata è integrabile nei modelli di Azure Resource Manager e può essere eseguita anche tramite l'interfaccia della riga di comando di Azure, PowerShell, il portale di Azure o l'API REST di Macchine virtuali di Azure.The Custom Script extension integrates with Azure Resource Manager templates, and can also be run using the Azure CLI, PowerShell, Azure portal, or the Azure Virtual Machine REST API.

È possibile usare l'estensione script personalizzata con macchine virtuali sia Linux che Windows.You can use the Custom Script Extension with both Windows and Linux VMs.

Crea macchina virtualeCreate virtual machine

Per poter creare una macchina virtuale è prima necessario creare un gruppo di risorse con il comando New-AzureRmResourceGroup.Before you can create a VM, create a resource group with New-AzureRmResourceGroup. L'esempio seguente crea un gruppo di risorse denominato myResourceGroupAutomate nella posizione EastUS:The following example creates a resource group named myResourceGroupAutomate in the EastUS location:

New-AzureRmResourceGroup -ResourceGroupName myResourceGroupAutomate -Location EastUS

Impostare nome utente e password dell'amministratore delle macchine virtuali con il comando Get-Credential:Set an administrator username and password for the VMs with Get-Credential:

$cred = Get-Credential

A questo punto è possibile creare la macchina virtuale con il comando New AzureRmVM.Now you can create the VM with New-AzureRmVM. Nell'esempio seguente vengono creati i componenti della rete virtuale necessari e viene eseguita la configurazione del sistema operativo. Viene quindi creata una macchina virtuale denominata myVM:The following example creates the required virtual network components, the OS configuration, and then creates a VM named myVM:

# Create a subnet configuration
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
    -Name mySubnet `
    -AddressPrefix 192.168.1.0/24

# Create a virtual network
$vnet = New-AzureRmVirtualNetwork `
    -ResourceGroupName myResourceGroupAutomate `
    -Location EastUS `
    -Name myVnet `
    -AddressPrefix 192.168.0.0/16 `
    -Subnet $subnetConfig

# Create a public IP address and specify a DNS name
$publicIP = New-AzureRmPublicIpAddress `
    -ResourceGroupName myResourceGroupAutomate `
    -Location EastUS `
    -AllocationMethod Static `
    -IdleTimeoutInMinutes 4 `
    -Name "myPublicIP"

# Create an inbound network security group rule for port 3389
$nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `
    -Name myNetworkSecurityGroupRuleRDP  `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 1000 `
    -SourceAddressPrefix * `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 3389 `
    -Access Allow

# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzureRmNetworkSecurityRuleConfig `
    -Name myNetworkSecurityGroupRuleWWW  `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 1001 `
    -SourceAddressPrefix * `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 80 `
    -Access Allow

# Create a network security group
$nsg = New-AzureRmNetworkSecurityGroup `
    -ResourceGroupName myResourceGroupAutomate `
    -Location EastUS `
    -Name myNetworkSecurityGroup `
    -SecurityRules $nsgRuleRDP,$nsgRuleWeb

# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzureRmNetworkInterface `
    -Name myNic `
    -ResourceGroupName myResourceGroupAutomate `
    -Location EastUS `
    -SubnetId $vnet.Subnets[0].Id `
    -PublicIpAddressId $publicIP.Id `
    -NetworkSecurityGroupId $nsg.Id

# Create a virtual machine configuration
$vmConfig = New-AzureRmVMConfig -VMName myVM -VMSize Standard_DS2 | `
Set-AzureRmVMOperatingSystem -Windows -ComputerName myVM -Credential $cred | `
Set-AzureRmVMSourceImage -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer -Skus 2016-Datacenter -Version latest | `
Add-AzureRmVMNetworkInterface -Id $nic.Id

# Create a virtual machine using the configuration
New-AzureRmVM -ResourceGroupName myResourceGroupAutomate -Location EastUS -VM $vmConfig

Per creare le risorse e la macchina virtuale sono necessari alcuni minuti.It takes a few minutes for the resources and VM to be created.

Automatizzare l'installazione IISAutomate IIS install

Usare il comando Set-AzureRmVMExtension per installare l'estensione dello script personalizzata.Use Set-AzureRmVMExtension to install the Custom Script Extension. L'estensione esegue powershell Add-WindowsFeature Web-Server per installare il server Web IIS e quindi aggiorna la pagina Default.htm per visualizzare il nome host della VM:The extension runs powershell Add-WindowsFeature Web-Server to install the IIS webserver and then updates the Default.htm page to show the hostname of the VM:

Set-AzureRmVMExtension -ResourceGroupName myResourceGroupAutomate `
    -ExtensionName IIS `
    -VMName myVM `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
    -Location EastUS

Testare il sito WebTest web site

Ottenere l'indirizzo IP pubblico del servizio di bilanciamento del carico con il comando Get-AzureRmPublicIPAddress.Obtain the public IP address of your load balancer with Get-AzureRmPublicIPAddress. Nell'esempio seguente si ottiene l'indirizzo IP per myPublicIP creato in precedenza:The following example obtains the IP address for myPublicIP created earlier:

Get-AzureRmPublicIPAddress `
    -ResourceGroupName myResourceGroupAutomate `
    -Name myPublicIP | select IpAddress

Sarà quindi possibile immettere l'indirizzo IP pubblico in un Web browser.You can then enter the public IP address in to a web browser. Verrà visualizzato il sito Web, con il nome host della macchina virtuale a cui il servizio di bilanciamento del carico ha distribuito il traffico, come nell'esempio seguente:The website is displayed, including the hostname of the VM that the load balancer distributed traffic to as in the following example:

Esecuzione del sito Web IIS

Passaggi successiviNext steps

In questa esercitazione è stata automatizzata l'installazione di IIS in una macchina virtuale.In this tutorial, you automated the IIS install on a VM. Si è appreso come:You learned how to:

  • Usare l'estensione dello script personalizzata per installare IISUse the Custom Script Extension to install IIS
  • Creare una macchina virtuale che usi l'estensione dello script personalizzataCreate a VM that uses the Custom Script Extension
  • Visualizzare un sito IIS in esecuzione dopo l'applicazione dell'estensioneView a running IIS site after the extension is applied

Passare all'esercitazione successiva per imparare a creare immagini di macchine virtuali personalizzate.Advance to the next tutorial to learn how to create custom VM images.