Creare una VM con un indirizzo IP pubblico statico mediante Azure PowerShellCreate a VM with a static public IP address using PowerShell

È possibile creare macchine virtuali (VM) in Azure ed esporle a Internet pubblico tramite un indirizzo IP pubblico.You can create virtual machines (VMs) in Azure and expose them to the public Internet by using a public IP address. Per impostazione predefinita, gli IP pubblici sono dinamici e l'indirizzo associato può cambiare quando viene eliminata la VM.By default, Public IPs are dynamic and the address associated to them may change when the VM is deleted. Per garantire che la VM utilizzi sempre lo stesso indirizzo IP pubblico, è necessario creare un IP pubblico statico.To guarantee that the VM always uses the same public IP address, you need to create a static Public IP.

Prima di implementare gli IP pubblici statici nelle VM, è necessario capire quando e come si possono usare gli IP pubblici statici.Before you can implement static Public IPs in VMs, it is necessary to understand when you can use static Public IPs, and how they are used. Leggere la panoramica sugli indirizzi IP per altre informazioni sull'indirizzamento IP in Azure.Read the IP addressing overview to learn more about IP addressing in Azure.

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. Questo articolo illustra l'uso del modello di distribuzione Resource Manager che Microsoft consiglia di usare invece del modello di distribuzione classica per le distribuzioni più recenti.This article covers using the Resource Manager deployment model, which Microsoft recommends for most new deployments instead of the classic deployment model.

ScenarioScenario

In questo documento verrà illustrata una distribuzione che usa un indirizzo IP pubblico statico allocato a una macchina virtuale (VM).This document will walk through a deployment that uses a static public IP address allocated to a virtual machine (VM). In questo scenario, si dispone di una singola VM con il proprio indirizzo IP pubblico statico.In this scenario, you have a single VM with its own static public IP address. La VM fa parte di una subnet denominata FrontEnd e ha anche un indirizzo IP privato statico (192.168.1.101) nella subnet.The VM is part of a subnet named FrontEnd and also has a static private IP address (192.168.1.101) in that subnet.

Potrebbe essere necessario un indirizzo IP statico per i server Web che richiedono connessioni SSL in cui il certificato SSL è collegato a un indirizzo IP.You may need a static IP address for web servers that require SSL connections in which the SSL certificate is linked to an IP address.

DESCRIZIONE DELL’IMMAGINE

È possibile seguire i passaggi riportati sotto per distribuire l'ambiente illustrato nella figura precedente.You can follow the steps below to deploy the environment shown in the figure above.

Prerequisito: installare il modulo Azure PowerShellPrerequisite: Install the Azure PowerShell module

Per eseguire i passaggi indicati in questo articolo, è necessario installare e configurare il modulo Azure PowerShell.To perform the steps in this article, you need to install and configure the Azure PowerShell module. Assicurarsi di completare tutte le istruzioni.Be sure to complete all of the instructions. Al termine dell'installazione, accedere ad Azure e selezionare la sottoscrizione.After the installation is finished, sign in to Azure and select your subscription.

Nota

Per completare questi passaggi, è necessario un account Azure.You need an Azure account to complete these steps. Se non si ha un account Azure, è possibile iscriversi per ottenere una versione di valutazione gratuita.If you don't have an Azure account, you can sign up for a free trial.

Passaggio 1 - avviare lo scriptStep 1 - Start your script

È possibile scaricare lo script di PowerShell completo utilizzato qui.You can download the full PowerShell script used here. Attenersi alla procedura seguente per modificare lo script da usare nell'ambiente.Follow the steps below to change the script to work in your environment.

Modificare i valori delle variabili indicate di seguito in base ai valori che si desidera usare per la distribuzione.Change the values of the variables below based on the values you want to use for your deployment. I valori seguenti si riferiscono allo scenario usato in questo articolo:The following values map to the scenario used in this article:

# Set variables resource group
$rgName                = "IaaSStory"
$location              = "West US"

# Set variables for VNet
$vnetName              = "WTestVNet"
$vnetPrefix            = "192.168.0.0/16"
$subnetName            = "FrontEnd"
$subnetPrefix          = "192.168.1.0/24"

# Set variables for storage
$stdStorageAccountName = "iaasstorystorage"

# Set variables for VM
$vmSize                = "Standard_A1"
$diskSize              = 127
$publisher             = "MicrosoftWindowsServer"
$offer                 = "WindowsServer"
$sku                   = "2012-R2-Datacenter"
$version               = "latest"
$vmName                = "WEB1"
$osDiskName            = "osdisk"
$nicName               = "NICWEB1"
$privateIPAddress      = "192.168.1.101"
$pipName               = "PIPWEB1"
$dnsName               = "iaasstoryws1"

Passaggio 2 - Creare le risorse necessarie per la VMStep 2 - Create the necessary resources for your VM

Prima di creare una VM, è necessario disporre di un gruppo di risorse, una rete virtuale, un IP pubblico e una scheda di rete utilizzabili dalla VM.Before creating a VM, you need a resource group, VNet, public IP, and NIC to be used by the VM.

  1. Creare un nuovo gruppo di risorse.Create a new resource group.

    New-AzureRmResourceGroup -Name $rgName -Location $location
    
  2. Creare rete virtuale e subnet.Create the VNet and subnet.

    $vnet = New-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName `
        -AddressPrefix $vnetPrefix -Location $location
    
    Add-AzureRmVirtualNetworkSubnetConfig -Name $subnetName `
        -VirtualNetwork $vnet -AddressPrefix $subnetPrefix
    
    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
    
  3. Creare la risorsa di IP pubblico.Create the public IP resource.

    $pip = New-AzureRmPublicIpAddress -Name $pipName -ResourceGroupName $rgName `
        -AllocationMethod Static -DomainNameLabel $dnsName -Location $location
    
  4. Creare l'interfaccia di rete (NIC) per la VM nella subnet creata in precedenza, con l'IP pubblico.Create the network interface (NIC) for the VM in the subnet created above, with the public IP. Notare che il primo cmdlet che recupera la rete virtuale da Azure è necessario perché Set-AzureRmVirtualNetwork è stato eseguito per modificare la rete virtuale esistente.Notice the first cmdlet retrieving the VNet from Azure, this is necessary since a Set-AzureRmVirtualNetwork was executed to change the existing VNet.

    $vnet = Get-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName
    $subnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $subnetName
    $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName `
        -Subnet $subnet -Location $location -PrivateIpAddress $privateIPAddress `
        -PublicIpAddress $pip
    
  5. Creare un account di archiviazione per ospitare l'unità del sistema operativo della VM.Create a storage account to host the VM OS drive.

    $stdStorageAccount = New-AzureRmStorageAccount -Name $stdStorageAccountName `
    -ResourceGroupName $rgName -Type Standard_LRS -Location $location
    

Passaggio 3 - Creare la VMStep 3 - Create the VM

Ora che tutte le risorse necessarie sono presenti, è possibile creare una nuova VM.Now that all necessary resources are in place, you can create a new VM.

  1. Creare l'oggetto di configurazione per la VM.Create the configuration object for the VM.

    $vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize
    
  2. Ottenere le credenziali per l'account amministratore locale della VM.Get credentials for the VM local administrator account.

    $cred = Get-Credential -Message "Type the name and password for the local administrator account."
    
  3. Creare un oggetto di configurazione della VM.Create a VM configuration object.

    $vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName `
        -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
    
  4. Impostare l'immagine del sistema operativo per la VM.Set the operating system image for the VM.

    $vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName $publisher `
        -Offer $offer -Skus $sku -Version $version
    
  5. Configurare il disco del sistema operativo.Configure the OS disk.

    $osVhdUri = $stdStorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $osDiskName + ".vhd"
    $vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $osDiskName -VhdUri $osVhdUri -CreateOption fromImage
    
  6. Aggiungere la scheda di rete alla VM.Add the NIC to the VM.

    $vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id -Primary
    
  7. Creare la macchina virtualeCreate the VM.

    New-AzureRmVM -VM $vmConfig -ResourceGroupName $rgName -Location $location
    
  8. Salvare il file di script.Save the script file.

Passaggio 4 - eseguire lo script.Step 4 - Run the script

Dopo aver apportato tutte le modifiche necessarie e aver compreso il funzionamento dello script illustrato sopra, eseguire lo script.After making any necessary changes, and understanding the script show above, run the script.

  1. Dalla console di PowerShell o PowerShell ISE, eseguire lo script sopra riportato.From a PowerShell console, or PowerShell ISE, run the script above.
  2. L'output seguente deve essere visualizzato dopo pochi minuti:The following output should be displayed after a few minutes:

     ResourceGroupName : IaaSStory
     Location          : westus
     ProvisioningState : Succeeded
     Tags              : 
     ResourceId        : /subscriptions/[Subscription ID]/resourceGroups/IaaSStory
    
     AddressSpace      : Microsoft.Azure.Commands.Network.Models.PSAddressSpace
     DhcpOptions       : Microsoft.Azure.Commands.Network.Models.PSDhcpOptions
     Subnets           : {FrontEnd}
     ProvisioningState : Succeeded
     AddressSpaceText  : {
                           "AddressPrefixes": [
                             "192.168.0.0/16"
                           ]
                         }
     DhcpOptionsText   : {}
     SubnetsText       : [
                           {
                             "Name": "FrontEnd",
                             "AddressPrefix": "192.168.1.0/24"
                           }
                         ]
     ResourceGroupName : IaaSStory
     Location          : westus
     ResourceGuid      : [Id]
     Tag               : {}
     TagsTable         : 
     Name              : WTestVNet
     Etag              : W/"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
     Id                : /subscriptions/[Subscription ID]/resourceGroups/IaaSStory/providers/Microsoft.Network/virtualNetworks/WTestVNet
    
     AddressSpace      : Microsoft.Azure.Commands.Network.Models.PSAddressSpace
     DhcpOptions       : Microsoft.Azure.Commands.Network.Models.PSDhcpOptions
     Subnets           : {FrontEnd}
     ProvisioningState : Succeeded
     AddressSpaceText  : {
                           "AddressPrefixes": [
                             "192.168.0.0/16"
                           ]
                         }
     DhcpOptionsText   : {
                           "DnsServers": []
                         }
     SubnetsText       : [
                           {
                             "Name": "FrontEnd",
                             "Etag": [Id],
                             "Id": "/subscriptions/[Subscription ID]/resourceGroups/IaaSStory/providers/Microsoft.Network/virtualNetworks/WTestVNet/subnets/FrontEnd",
                             "AddressPrefix": "192.168.1.0/24",
                             "IpConfigurations": [],
                             "ProvisioningState": "Succeeded"
                           }
                         ]
     ResourceGroupName : IaaSStory
     Location          : westus
     ResourceGuid      : [Id]
     Tag               : {}
     TagsTable         : 
     Name              : WTestVNet
     Etag              : [Id]
     Id                : /subscriptions/[Subscription Id]/resourceGroups/IaaSStory/providers/Microsoft.Network/virtualNetworks/WTestVNet
    
     TrackingOperationId : [Id]
     RequestId           : [Id]
     Status              : Succeeded
     StatusCode          : OK
     Output              : 
     StartTime           : [Subscription Id]
     EndTime             : [Subscription Id]
     Error               : 
     ErrorText           :