Avvio rapido: Creare una macchina virtuale Windows Server usando PowerShell nell'hub di Azure Stack

È possibile creare una macchina virtuale Windows Server 2016 usando Azure Stack Hub PowerShell. Seguire la procedura descritta in questo articolo per creare e usare una macchina virtuale. Questo articolo offre anche i passaggi da seguire:

  • Connettersi alla macchina virtuale con un client remoto.
  • Installare il server Web IIS e visualizzare la home page predefinita.
  • Pulire le risorse.

Nota

È possibile eseguire i passaggi descritti in questo articolo da Azure Stack Development Kit o da un client esterno basato su Windows se si è connessi tramite una VPN.

Prerequisiti per la macchina virtuale Windows Server

  • Assicurarsi che l'operatore hub di Azure Stack abbia aggiunto l'immagine Windows Server 2016 al Marketplace dell'hub di Azure Stack.

  • L'hub di Azure Stack richiede una versione specifica di Azure PowerShell per creare e gestire le risorse. Se PowerShell non è configurato per l'hub di Azure Stack, seguire la procedura per installare PowerShell.

  • Con la configurazione di PowerShell dell'hub di Azure Stack, è necessario connettersi all'ambiente dell'hub di Azure Stack. Per istruzioni, vedere Connettersi all'hub di Azure Stack con PowerShell come utente.

Creare un gruppo di risorse

Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse dell'hub di Azure Stack. Dal kit di sviluppo o dal sistema integrato dell'hub di Azure Stack eseguire il blocco di codice seguente per creare un gruppo di risorse.

Nota

I valori vengono assegnati per tutte le variabili negli esempi di codice. Tuttavia, è possibile assegnare nuovi valori se si vuole.

# Create variables to store the location and resource group names.
$location = "local"
$ResourceGroupName = "myResourceGroup"

New-AzResourceGroup `
  -Name $ResourceGroupName `
  -Location $location

Creare le risorse di archiviazione

Creare un account di archiviazione per archiviare l'output della diagnostica di avvio.

# Create variables to store the storage account name and the storage account SKU information
$StorageAccountName = "mystorageaccount"
$SkuName = "Standard_LRS"

# Create a new storage account
$StorageAccount = New-AzStorageAccount `
  -Location $location `
  -ResourceGroupName $ResourceGroupName `
  -Type $SkuName `
  -Name $StorageAccountName

Set-AzCurrentStorageAccount `
  -StorageAccountName $storageAccountName `
  -ResourceGroupName $resourceGroupName

Creare risorse di rete

Creare una rete virtuale, una subnet e un indirizzo IP pubblico. Queste risorse vengono usate per fornire connettività di rete alla macchina virtuale.

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

# Create a virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -Name MyVnet `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -AllocationMethod Static `
  -IdleTimeoutInMinutes 4 `
  -Name "mypublicdns$(Get-Random)"

Creare un gruppo di sicurezza di rete e una regola del gruppo di sicurezza di rete

Il gruppo di sicurezza di rete protegge la macchina virtuale usando regole in ingresso e in uscita. Verrà creata una regola in ingresso per la porta 3389 per consentire le connessioni Desktop remoto in ingresso e una regola in ingresso per la porta 80 per consentire il traffico Web in ingresso.

# Create an inbound network security group rule for port 3389
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig `
  -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-AzNetworkSecurityRuleConfig `
  -Name myNetworkSecurityGroupRuleWWW `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1001 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

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

Creare una scheda di rete per la macchina virtuale

La scheda di rete connette la macchina virtuale a una subnet, un gruppo di sicurezza di rete e un indirizzo IP pubblico.

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

Creare una VM

Creare una configurazione di macchina virtuale. Questa configurazione include le impostazioni usate durante la distribuzione della macchina virtuale. Ad esempio: credenziali, dimensioni e immagine della macchina virtuale.

# Define a credential object to store the username and password for the VM
$UserName='demouser'
$Password='Password@123'| ConvertTo-SecureString -Force -AsPlainText
$Credential=New-Object PSCredential($UserName,$Password)

# Create the VM configuration object
$VmName = "VirtualMachinelatest"
$VmSize = "Standard_A1"
$VirtualMachine = New-AzVMConfig `
  -VMName $VmName `
  -VMSize $VmSize

$VirtualMachine = Set-AzVMOperatingSystem `
  -VM $VirtualMachine `
  -Windows `
  -ComputerName "MainComputer" `
  -Credential $Credential -ProvisionVMAgent

$VirtualMachine = Set-AzVMSourceImage `
  -VM $VirtualMachine `
  -PublisherName "MicrosoftWindowsServer" `
  -Offer "WindowsServer" `
  -Skus "2016-Datacenter" `
  -Version "latest"

# Sets the operating system disk properties on a VM.
$VirtualMachine = Set-AzVMOSDisk `
  -VM $VirtualMachine `
  -CreateOption FromImage | `
  Set-AzVMBootDiagnostic -ResourceGroupName $ResourceGroupName `
  -StorageAccountName $StorageAccountName -Enable |`
  Add-AzVMNetworkInterface -Id $nic.Id


# Create the VM.
New-AzVM `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -VM $VirtualMachine

Connettersi alla VM

Per accedere in remoto alla macchina virtuale creata nel passaggio precedente, è necessario l'indirizzo IP pubblico. Eseguire il comando seguente per ottenere l'indirizzo IP pubblico della macchina virtuale:

Get-AzPublicIpAddress `
  -ResourceGroupName $ResourceGroupName | Select IpAddress

Usare il comando seguente per creare una sessione desktop remoto con la macchina virtuale. Sostituire l'indirizzo IP con l'indirizzo publicIPAddress della macchina virtuale. Quando richiesto, immettere il nome utente e la password usati durante la creazione della macchina virtuale.

mstsc /v <publicIpAddress>

Installare IIS tramite PowerShell

Dopo aver eseguito l'accesso alla macchina virtuale di Azure, è possibile usare una singola riga di PowerShell per installare IIS e abilitare la regola del firewall locale per consentire il traffico Web. Aprire un prompt di PowerShell ed eseguire questo comando:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

Visualizzare la pagina iniziale di IIS

Con IIS installato e con la porta 80 aperta nella macchina virtuale, è possibile usare qualsiasi browser per visualizzare la pagina iniziale di IIS predefinita. Usare publicIpAddress documentato nella sezione precedente per visitare la pagina predefinita.

Sito IIS predefinito

Eliminare la macchina virtuale

Quando non è più necessario, usare il comando seguente per rimuovere il gruppo di risorse che contiene la macchina virtuale e le relative risorse:

Remove-AzResourceGroup `
  -Name $ResourceGroupName

Passaggi successivi

In questa guida introduttiva è stata distribuita una semplice macchina virtuale Windows. Per altre informazioni sulle macchine virtuali dell'hub di Azure Stack, continuare con le funzionalità della macchina virtuale dell'hub di Azure Stack.