Creare una VM con un indirizzo IP pubblico statico mediante un modello di Azure Resource ManagerCreate a VM with a static public IP address using an Azure Resource Manager template

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

Risorse indirizzo IP pubblico in un file di modelloPublic IP address resources in a template file

È possibile visualizzare e scaricare il modello di esempio.You can view and download the sample template.

La sezione seguente illustra la definizione della risorsa IP pubblico in base allo scenario precedente:The following section shows the definition of the public IP resource, based on the scenario above:

{
  "apiVersion": "2015-06-15",
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('webVMSetting').pipName]",
  "location": "[variables('location')]",
  "properties": {
    "publicIPAllocationMethod": "Static"
  },
  "tags": {
    "displayName": "PublicIPAddress - Web"
  }
},

Notare la proprietà publicIPAllocationMethod impostata su Statico.Notice the publicIPAllocationMethod property, which is set to Static. Questa proprietà può essere Dinamico (valore predefinito) o Statico.This property can be either Dynamic (default value) or Static. Impostarla su Static garantisce che l'indirizzo IP pubblico assegnato non verrà mai modificato.Setting it to static guarantees that the public IP address assigned will never change.

La sezione seguente illustra l'associazione dell'IP pubblico con un'interfaccia di rete:The following section shows the association of the public IP address with a network interface:

  {
    "apiVersion": "2015-06-15",
    "type": "Microsoft.Network/networkInterfaces",
    "name": "[variables('webVMSetting').nicName]",
    "location": "[variables('location')]",
    "tags": {
    "displayName": "NetworkInterface - Web"
    },
    "dependsOn": [
      "[concat('Microsoft.Network/publicIPAddresses/', variables('webVMSetting').pipName)]",
      "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]"
    ],
    "properties": {
      "ipConfigurations": [
        {
          "name": "ipconfig1",
          "properties": {
          "privateIPAllocationMethod": "Static",
          "privateIPAddress": "[variables('webVMSetting').ipAddress]",
          "publicIPAddress": {
          "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('webVMSetting').pipName)]"
          },
          "subnet": {
            "id": "[variables('frontEndSubnetRef')]"
          }
        }
      }
    ]
  }
},

Si noti che la proprietà publicIPAddress punta all'Id di una risorsa denominata variables('webVMSetting').pipName.Notice the publicIPAddress property pointing to the Id of a resource named variables('webVMSetting').pipName. È il nome della risorsa IP pubblico illustrata sopra.That is the name of the public IP resource shown above.

Infine, l'interfaccia di rete di cui sopra è elencata nella proprietà networkProfile della VM in fase di creazione.Finally, the network interface above is listed in the networkProfile property of the VM being created.

      "networkProfile": {
        "networkInterfaces": [
          {
            "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('webVMSetting').nicName)]"
          }
        ]
      }

Distribuire il modello tramite clic per la distribuzioneDeploy the template by using click to deploy

Il modello di esempio disponibile nel repository pubblico usa un file di parametro che contiene i valori predefiniti usati per generare lo scenario descritto in precedenza.The sample template available in the public repository uses a parameter file containing the default values used to generate the scenario described above. Per distribuire questo modello tramite clic per la distribuzione, fare clic su Deploy to Azure (Distribuisci in Azure) nel file Readme.md per il modello VM with static PIP modello(VM con PIP statico).To deploy this template using click to deploy, click Deploy to Azure in the Readme.md file for the VM with static PIP template. Se richiesto, sostituire i valori predefiniti dei parametri e immettere i valori per i parametri vuoti.Replace the default parameter values if desired and enter values for the blank parameters. Seguire le istruzioni nel portale per creare una macchina virtuale con un indirizzo IP pubblico statico.Follow the instructions in the portal to create a virtual machine with a static public IP address.

Distribuire il modello tramite PowerShellDeploy the template by using PowerShell

Per distribuire il modello scaricato tramite PowerShell, seguire questa procedura.To deploy the template you downloaded by using PowerShell, follow the steps below.

  1. Se non è mai stato usato Azure PowerShell, completare la procedura descritta nell'articolo Come installare e configurare Azure PowerShell.If you have never used Azure PowerShell, complete the steps in the How to Install and Configure Azure PowerShell article.
  2. In una console PowerShell, eseguire il cmdlet New-AzureRmResourceGroup per creare un nuovo gruppo di risorse, se necessario.In a PowerShell console, run the New-AzureRmResourceGroup cmdlet to create a new resource group, if necessary. Se è già stato creato un gruppo di risorse, andare al passaggio 3.If you already have a resource group created, go to step 3.

    New-AzureRmResourceGroup -Name PIPTEST -Location westus
    

    Output previsto:Expected output:

     ResourceGroupName : PIPTEST
     Location          : westus
     ProvisioningState : Succeeded
     Tags              :
     ResourceId        : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/StaticPublicIP
    
  3. In una console di PowerShell, eseguire il cmdlet New-AzureRmResourceGroupDeployment per distribuire il modello.In a PowerShell console, run the New-AzureRmResourceGroupDeployment cmdlet to deploy the template.

    New-AzureRmResourceGroupDeployment -Name DeployVM -ResourceGroupName PIPTEST `
        -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/IaaS-Story/03-Static-public-IP/azuredeploy.json `
        -TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/IaaS-Story/03-Static-public-IP/azuredeploy.parameters.json
    

    Output previsto:Expected output:

     DeploymentName    : DeployVM
     ResourceGroupName : PIPTEST
     ProvisioningState : Succeeded
     Timestamp         : [Date and time]
     Mode              : Incremental
     TemplateLink      :
                         Uri            : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/mas
                         ter/IaaS-Story/03-Static-public-IP/azuredeploy.json
                         ContentVersion : 1.0.0.0
    
     Parameters        :
                         Name                      Type                       Value     
                         ========================  =========================  ==========
                         vnetName                  String                     WTestVNet
                         vnetPrefix                String                     192.168.0.0/16
                         frontEndSubnetName        String                     FrontEnd  
                         frontEndSubnetPrefix      String                     192.168.1.0/24
                         storageAccountNamePrefix  String                     iaasestd  
                         stdStorageType            String                     Standard_LRS
                         osType                    String                     Windows   
                         adminUsername             String                     adminUser
                         adminPassword             SecureString                         
    
     Outputs           :
    

Distribuire il modello tramite l'interfaccia della riga di comando di AzureDeploy the template by using the Azure CLI

Per distribuire il modello tramite l'interfaccia della riga di comando di Azure, completare la procedura seguente:To deploy the template by using the Azure CLI, complete the following steps:

  1. Se non è stata mai usata l'interfaccia della riga di comando di Azure, seguire la procedura riportata nell'articolo Installare e configurare l'interfaccia della riga di comando di Azure per installarla e configurarla.If you have never used Azure CLI, follow the steps in the Install and Configure the Azure CLI article to install and configure it.
  2. Eseguire il comando azure config mode per passare alla modalità Gestione risorse, come illustrato di seguito.Run the azure config mode command to switch to Resource Manager mode, as shown below.

    azure config mode arm
    

    Di seguito è riportato l'output previsto per il comando precedente:The expected output for the command above:

     info:    New mode is arm
    
  3. Aprire il file dei parametri, selezionarne il contenuto e salvarlo in un file nel computer in uso.Open the parameter file, select its content, and save it to a file in your computer. Per questo esempio, i parametri vengono salvati in un file denominato parameters.json.For this example, the parameters are saved to a file named parameters.json. Modificare i valori dei parametri all'interno del file, se richiesto, ma, come minimo, è consigliabile modificare il valore del parametro adminPassword in una password complessa e univoca.Change the parameter values within the file if desired, but at a minimum, it's recommended that you change the value for the adminPassword parameter to a unique, complex password.

  4. Eseguire il cmdlet azure group deployment create per distribuire la nuova rete virtuale usando il modello e i file dei parametri scaricati e modificati in precedenza.Run the azure group deployment create cmd to deploy the new VNet by using the template and parameter files you downloaded and modified above. Nel comando seguente sostituire con il percorso in cui è stato salvato il file.In the command below, replace with the path you saved the file to.

    azure group create -n PIPTEST2 -l westus --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/IaaS-Story/03-Static-public-IP/azuredeploy.json -e <path>\parameters.json
    

    Output previsto (elenca i valori usati per i parametri):Expected output (lists parameter values used):

     info:    Executing command group create
     + Getting resource group PIPTEST2
     + Creating resource group PIPTEST2
     info:    Created resource group PIPTEST2
     + Initializing template configurations and parameters
     + Creating a deployment
     info:    Created template deployment "azuredeploy"
     data:    Id:                  /subscriptions/[Subscription ID]/resourceGroups/PIPTEST2
     data:    Name:                PIPTEST2
     data:    Location:            westus
     data:    Provisioning State:  Succeeded
     data:    Tags: null
     data:
     info:    group create command OK