Creare una VM con un indirizzo IP pubblico statico usando l'interfaccia della riga di comando di AzureCreate a VM with a static public IP address using the Azure CLI

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

Azure offre due diversi 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.

Creare la VMCreate the VM

I valori in "" per le variabili nei passaggi seguenti creano le risorse con le impostazioni usate nello scenario.The values in "" for the variables in the steps that follow create resources with settings from the scenario. Sostituire i valori in base alle esigenze specifiche dell'ambiente.Change the values, as appropriate, for your environment.

  1. Installare l'interfaccia della riga di comando di Azure 2.0, se non è già stata installata.Install the Azure CLI 2.0 if you don't already have it installed.
  2. Creare una coppia di chiavi SSH pubblica e privata per le VM Linux completando i passaggi descritti in Creare una coppia di chiavi SSH pubblica e privata per le VM Linux.Create an SSH public and private key pair for Linux VMs by completing the steps in the Create an SSH public and private key pair for Linux VMs.
  3. Da una shell dei comandi accedere con il comando az login.From a command shell, login with the command az login.
  4. Creare la VM eseguendo lo script seguente in un computer Linux o Mac.Create the VM by executing the script that follows on a Linux or Mac computer. Le risorse di indirizzo IP pubblico di Azure, rete virtuale, interfaccia di rete e VM devono essere tutte presenti nella stessa località.The Azure public IP address, virtual network, network interface, and VM resources must all exist in the same location. Lo script seguente esamina un caso in cui tutte le risorse sono incluse nello stesso gruppo di risorse, anche se questo non è un requisito.Though the resources don't all have to exist in the same resource group, in the following script they do.
RgName="IaaSStory"
Location="westus"

# Create a resource group.

az group create \
--name $RgName \
--location $Location

# Create a public IP address resource with a static IP address using the --allocation-method Static option.
# If you do not specify this option, the address is allocated dynamically. The address is assigned to the
# resource from a pool of IP adresses unique to each Azure region. The DnsName must be unique within the
# Azure location it's created in. Download and view the file from https://www.microsoft.com/en-us/download/details.aspx?id=41653#
# that lists the ranges for each region.

PipName="PIPWEB1"
DnsName="iaasstoryws1"
az network public-ip create \
--name $PipName \
--resource-group $RgName \
--location $Location \
--allocation-method Static \
--dns-name $DnsName

# Create a virtual network with one subnet

VnetName="TestVNet"
VnetPrefix="192.168.0.0/16"
SubnetName="FrontEnd"
SubnetPrefix="192.168.1.0/24"
az network vnet create \
--name $VnetName \
--resource-group $RgName \
--location $Location \
--address-prefix $VnetPrefix \
--subnet-name $SubnetName \
--subnet-prefix $SubnetPrefix

# Create a network interface connected to the VNet with a static private IP address and associate the public IP address
# resource to the NIC.

NicName="NICWEB1"
PrivateIpAddress="192.168.1.101"
az network nic create \
--name $NicName \
--resource-group $RgName \
--location $Location \
--subnet $SubnetName \
--vnet-name $VnetName \
--private-ip-address $PrivateIpAddress \
--public-ip-address $PipName

# Create a new VM with the NIC

VmName="WEB1"

# Replace the value for the VmSize variable with a value from the
# https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-sizes article.
VmSize="Standard_DS1"

# Replace the value for the OsImage variable with a value for *urn* from the output returned by entering
# the `az vm image list` command. 

OsImage="credativ:Debian:8:latest"
Username='adminuser'

# Replace the following value with the path to your public key file.
SshKeyValue="~/.ssh/id_rsa.pub"

az vm create \
--name $VmName \
--resource-group $RgName \
--image $OsImage \
--location $Location \
--size $VmSize \
--nics $NicName \
--admin-username $Username \
--ssh-key-value $SshKeyValue
# If creating a Windows VM, remove the previous line and you'll be prompted for the password you want to configure for the VM.

Oltre a creare una VM, lo script crea:In addition to creating a VM, the script creates:

  • Un unico disco gestito Premium per impostazione predefinita, ma sono disponibili altre opzioni per il tipo di disco che è possibile creare.A single premium managed disk by default, but you have other options for the disk type you can create. Leggere Creare una VM Linux usando l'interfaccia della riga di comando di Azure 2.0 per informazioni dettagliate.Read the Create a Linux VM using the Azure CLI 2.0 article for details.
  • Risorse di rete virtuale, subnet, scheda di interfaccia di rete e indirizzo IP pubblico.Virtual network, subnet, NIC, and public IP address resources. In alternativa, è possibile usare le risorse esistenti di rete virtuale, subnet, scheda di interfaccia di rete o indirizzo IP pubblico.Alternatively, you can use existing virtual network, subnet, NIC, or public IP address resources. Per informazioni su come usare le risorse di rete esistenti anziché creare risorse aggiuntive, immettere az vm create -h.To learn how to use existing network resources rather than creating additional resources, enter az vm create -h.

Convalidare la creazione della VM e l'indirizzo IP pubblicoValidate VM creation and public IP address

  1. Immettere il comando az resource list --resouce-group IaaSStory --output table per visualizzare un elenco di risorse create dallo script.Enter the command az resource list --resouce-group IaaSStory --output table to see a list of the resources created by the script. L'output restituito dovrebbe contenere cinque risorse: interfaccia di rete, disco, indirizzo IP pubblico, rete virtuale e una macchina virtuale.There should be five resources in the returned output: network interface, disk, public IP address, virtual network, and a virtual machine.
  2. Immettere il comando az network public-ip show --name PIPWEB1 --resource-group IaaSStory --output table.Enter the command az network public-ip show --name PIPWEB1 --resource-group IaaSStory --output table. Nell'output restituito prendere nota del valore di IpAddress e che il valore di PublicIpAllocationMethod è Static.In the returned output, note the value of IpAddress and that the value of PublicIpAllocationMethod is Static.
  3. Prima di eseguire il comando seguente, rimuovere <>, sostituire Username con il nome usato per la variabile Username nello script, quindi sostituire ipAddress con l'ipAddress usato nel passaggio precedente.Before executing the following command, remove the <>, replace Username with the name you used for the Username variable in the script, and replace ipAddress with the ipAddress from the previous step. Eseguire il comando seguente per effettuare la connessione alla VM: ssh -i ~/.ssh/azure_id_rsa <Username>@<ipAddress>.Run the following command to connect to the VM: ssh -i ~/.ssh/azure_id_rsa <Username>@<ipAddress>.

Rimuovere la VM e le risorse associateRemove the VM and associated resources

È consigliabile eliminare le risorse create in questo esercizio se non si intende usarle in produzione.It's recommended that you delete the resources created in this exercise if you won't use them in production. Le risorse di VM, indirizzo IP pubblico e disco comportano spese finché si esegue il provisioning.VM, public IP address, and disk resources incur charges, as long as they're provisioned. Per rimuovere le risorse create in questo esercizio, completare i passaggi seguenti:To remove the resources created during this exercise, complete the following steps:

  1. Eseguire il comando az resource list --resource-group IaaSStory per visualizzare le risorse nel gruppo di risorse.To view the resources in the resource group, run the az resource list --resource-group IaaSStory command.
  2. Verificare che nel gruppo di risorse non siano presenti altre risorse oltre a quelle create dallo script in questo articolo.Confirm there are no resources in the resource group, other than the resources created by the script in this article.
  3. Per eliminare tutte le risorse create in questo esercizio, eseguire il comando az group delete -n IaaSStory.To delete all resources created in this exercise, run the az group delete -n IaaSStory command. Il comando elimina il gruppo di risorse e tutte le risorse in esso contenute.The command deletes the resource group and all the resources it contains.

Passaggi successiviNext steps

Qualsiasi traffico di rete può scorrere da e verso la VM creata in questo articolo.Any network traffic can flow to and from the VM created in this article. È possibile definire regole in entrata e in uscita all'interno di un gruppo di sicurezza di rete che limitano il traffico in ingresso e in uscita dall'interfaccia di rete, la subnet o entrambe le risorse.You can define inbound and outbound rules within an NSG that limit the traffic that can flow to and from the network interface, the subnet, or both. Per altre informazioni sui gruppi di sicurezza di rete, vedere l'articolo Panoramica del gruppi di sicurezza di rete.To learn more about NSGs, read the NSG overview article.