Creare schede di interfaccia di rete virtuale e usare DNS interni per la risoluzione dei nomi di VM in AzureCreate virtual network interface cards and use internal DNS for VM name resolution on Azure

Questo articolo illustra come impostare nomi DNS interni statici per VM Linux usando schede di interfaccia di rete virtuale (vNic) e nomi di etichette DNS con l'interfaccia della riga di comando di Azure 2.0.This article shows you how to set static internal DNS names for Linux VMs using virtual network interface cards (vNics) and DNS label names with the Azure CLI 2.0. Si ricorre ai nomi DNS statici per i servizi di infrastruttura permanenti, ad esempio per un server di compilazione Jenkins, usato per questo documento, o un server Git.Static DNS names are used for permanent infrastructure services like a Jenkins build server, which is used for this document, or a Git server.

I requisiti sono:The requirements are:

Comandi rapidiQuick commands

Se si vuole eseguire rapidamente l'attività, la sezione seguente indica dettagliatamente i comandi necessari.If you need to quickly accomplish the task, the following section details the commands needed. Altre informazioni dettagliate e il contesto per ogni passaggio sono disponibili nelle sezioni successive del documento, a partire da qui.More detailed information and context for each step can be found in the rest of the document, starting here. Per eseguire questi passaggi è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e aver effettuato l'accesso a un account Azure con il comando az login.To perform these steps, you need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login.

Pre-requisiti: gruppo di risorse, rete virtuale e subnet, gruppo di sicurezza di rete con SSH in ingresso.Pre-Requirements: Resource Group, virtual network and subnet, Network Security Group with SSH inbound.

Creare una scheda di interfaccia di rete virtuale con un nome DNS interno staticoCreate a virtual network interface card with a static internal DNS name

Creare la vNic con il comando az network nic create.Create the vNic with az network nic create. Il flag --internal-dns-name dell'interfaccia della riga di comando consente di impostare l'etichetta DNS, che indica il nome DNS statico per la scheda di interfaccia di rete virtuale (vNic).The --internal-dns-name CLI flag is for setting the DNS label, which provides the static DNS name for the virtual network interface card (vNic). L'esempio seguente crea una scheda di rete virtuale denominata myNic, la connette alla rete virtuale myVnet e crea un record di nome DNS interno denominato jenkins:The following example creates a vNic named myNic, connects it to the myVnet virtual network, and creates an internal DNS name record called jenkins:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic \
    --vnet-name myVnet \
    --subnet mySubnet \
    --internal-dns-name jenkins

Distribuire una VM e connettere la scheda di interfaccia di rete virtualeDeploy a VM and connect the vNic

Creare una VM con il comando az vm create.Create a VM with az vm create. Il flag --nics consente di connette la scheda di interfaccia di rete virtuale alla VM durante la distribuzione in Azure.The --nics flag connects the vNic to the VM during the deployment to Azure. L'esempio seguente crea una VM myVM con Managed Disks di Azure e collega la scheda di interfaccia di rete virtuale denominata myNic ottenuta dal passaggio precedente:The following example creates a VM named myVM with Azure Managed Disks and attaches the vNic named myNic from the preceding step:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --nics myNic \
    --image UbuntuLTS \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/id_rsa.pub

Procedura dettagliataDetailed walkthrough

In Azure, un'infrastruttura interamente basata sul modello CiCd (Continuous Integration and Continuous Deployment) richiede la disponibilità di server statici o di lunga durata.A full continuous integration and continuous deployment (CiCd) infrastructure on Azure requires certain servers to be static or long-lived servers. È consigliabile che gli asset di Azure, come le reti virtuali e i gruppi di sicurezza di rete, siano risorse statiche, ovvero di lunga durata e distribuite raramente.It is recommended that Azure assets like the virtual networks and Network Security Groups are static and long lived resources that are rarely deployed. Dopo essere stata distribuita, una rete virtuale può essere usata in nuove distribuzioni senza alcun effetto negativo sull'infrastruttura.Once a virtual network has been deployed, it can be reused by new deployments without any adverse affects to the infrastructure. È possibile aggiungere in seguito un server repository Git e un server di automazione Jenkins, è possibile distribuire un modello CiCd in questa rete virtuale per un ambiente di test o di sviluppo.You can later add a Git repository server or a Jenkins automation server delivers CiCd to this virtual network for your development or test environments.

I nomi DNS interni sono risolvibili solo all'interno di una rete virtuale di Azure.Internal DNS names are only resolvable inside an Azure virtual network. Trattandosi di nomi interni, non sono risolvibili esternamente in Internet e garantiscono quindi una sicurezza aggiuntiva per l'infrastruttura.Because the DNS names are internal, they are not resolvable to the outside internet, providing additional security to the infrastructure.

Nell'esempio seguente sostituire i nomi dei parametri di esempio con i valori desiderati.In the following examples, replace example parameter names with your own values. Alcuni esempi di nomi dei parametri sono myResourceGroup, myNic e myVM.Example parameter names include myResourceGroup, myNic, and myVM.

Creare il gruppo di risorse.Create the resource group

Creare prima il gruppo di risorse con az group create.First, create the resource group with az group create. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroup nella località westus:The following example creates a resource group named myResourceGroup in the westus location:

az group create --name myResourceGroup --location westus

Creare la rete virtualeCreate the virtual network

Il passaggio successivo è creare una rete virtuale in cui avviare le VM.The next step is to build a virtual network to launch the VMs into. Ai fini di questa procedura, la rete virtuale contiene una subnet.The virtual network contains one subnet for this walkthrough. Per altre informazioni sulle reti virtuali di Azure, vedere Create a virtual network (Creare una rete virtuale).For more information on Azure virtual networks, see Create a virtual network.

Creare la rete virtuale con az network vnet create.Create the virtual network with az network vnet create. L'esempio seguente creata una rete virtuale denominata myVnet e una sottorete denominata mySubnet:The following example creates a virtual network named myVnet and subnet named mySubnet:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 192.168.0.0/16 \
    --subnet-name mySubnet \
    --subnet-prefix 192.168.1.0/24

Creare il gruppo di sicurezza di reteCreate the Network Security Group

I gruppi di sicurezza di rete di Azure sono analoghi a un firewall a livello di rete.Azure Network Security Groups are equivalent to a firewall at the network layer. Per altre informazioni sui gruppi di sicurezza di rete, vedere Come creare gruppi di sicurezza di rete nell'interfaccia della riga di comando di Azure.For more information about Network Security Groups, see How to create NSGs in the Azure CLI.

Creare il gruppo di sicurezza di rete con az network nsg create.Create the network security group with az network nsg create. Nell'esempio seguente viene creato un gruppo di sicurezza di rete denominato myNetworkSecurityGroup:The following example creates a network security group named myNetworkSecurityGroup:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

Aggiungere una regola in entrata per consentire SSHAdd an inbound rule to allow SSH

Aggiungere una regole in ingresso per il gruppo di sicurezza di rete con az network nsg rule create.Add an inbound rule for the network security group with az network nsg rule create. Nell'esempio seguente viene creata una regola denominata myRuleAllowSSH:The following example creates a rule named myRuleAllowSSH:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name myRuleAllowSSH \
    --protocol tcp \
    --direction inbound \
    --priority 1000 \
    --source-address-prefix '*' \
    --source-port-range '*' \
    --destination-address-prefix '*' \
    --destination-port-range 22 \
    --access allow

Associare la subnet con il gruppo di sicurezza di reteAssociate the subnet with the Network Security Group

Per associare la subnet con il gruppo di sicurezza di rete usare az network vnet subnet update.To associate the subnet with the Network Security Group, use az network vnet subnet update. L'esempio seguente associa il nome di subnet mySubnet al gruppo di sicurezza di rete myNetworkSecurityGroup:The following example associates the subnet name mySubnet with the Network Security Group named myNetworkSecurityGroup:

az network vnet subnet update \
    --resource-group myResourceGroup \
    --vnet-name myVnet \
    --name mySubnet \
    --network-security-group myNetworkSecurityGroup

Creare la scheda di interfaccia di rete virtuale e i nomi DNS staticiCreate the virtual network interface card and static DNS names

Sebbene Azure sia molto flessibile, per poter usare nomi DNS per la risoluzione dei nomi di VM è necessario creare schede di interfaccia di rete virtuale (vNic) che includano un'etichetta DNS.Azure is very flexible, but to use DNS names for VM name resolution, you need to create virtual network interface cards (vNics) that include a DNS label. Le schede di interfaccia di rete virtuale sono importanti in quanto è possibile riutilizzarle connettendole a VM differenti nel ciclo di vita dell'infrastruttura.vNics are important as you can reuse them by connecting them to different VMs over the infrastructure lifecycle. In questo modo la scheda di interfaccia di rete virtuale diventa una risorsa statica, mentre le VM possono essere temporanee.This approach keeps the vNic as a static resource while the VMs can be temporary. Applicando l'etichettatura DNS a una scheda di interfaccia di rete virtuale, è possibile abilitare nella rete virtuale la risoluzione di nomi semplici provenienti da altre VM.By using DNS labeling on the vNic, we are able to enable simple name resolution from other VMs in the VNet. L'uso di nomi risolvibili consente anche ad altre macchine virtuali di accedere al server di automazione in base al nome DNS Jenkins o al server Git come gitrepo.Using resolvable names enables other VMs to access the automation server by the DNS name Jenkins or the Git server as gitrepo.

Creare la vNic con il comando az network nic create.Create the vNic with az network nic create. L'esempio seguente crea una scheda di rete virtuale denominata myNic, la connette alla rete virtuale myVnet denominata myVnet e crea un record di nome DNS interno denominato jenkins:The following example creates a vNic named myNic, connects it to the myVnet virtual network named myVnet, and creates an internal DNS name record called jenkins:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic \
    --vnet-name myVnet \
    --subnet mySubnet \
    --internal-dns-name jenkins

Distribuire la macchina virtuale nell'infrastruttura di rete virtualeDeploy the VM into the virtual network infrastructure

A questo punto sono disponibili una rete virtuale e subnet, un gruppo di sicurezza di rete che funge da firewall per proteggere la subnet bloccando tutto il traffico in ingresso tranne quello verso la porta 22 per SSH e una scheda di interfaccia di rete virtuale.We now have a virtual network and subnet, a Network Security Group acting as a firewall to protect our subnet by blocking all inbound traffic except port 22 for SSH, and a vNic. Ora è possibile distribuire una VM all'interno di questa infrastruttura di rete esistente.You can now deploy a VM inside this existing network infrastructure.

Creare una VM con il comando az vm create.Create a VM with az vm create. L'esempio seguente crea una VM myVM con Managed Disks di Azure e collega la scheda di interfaccia di rete virtuale denominata myNic ottenuta dal passaggio precedente:The following example creates a VM named myVM with Azure Managed Disks and attaches the vNic named myNic from the preceding step:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --nics myNic \
    --image UbuntuLTS \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/id_rsa.pub

Usando i flag dell'interfaccia della riga di comando per chiamare le risorse esistenti, si indica ad Azure di distribuire la macchina virtuale all'interno della rete esistente.By using the CLI flags to call out existing resources, we instruct Azure to deploy the VM inside the existing network. Come già detto, dopo essere state distribuite la rete virtuale e la subnet possono essere usate come risorse statiche o permanenti nell'area di Azure.To reiterate, once a VNet and subnet have been deployed, they can be left as static or permanent resources inside your Azure region.

Passaggi successiviNext steps