Uso del DNS interno per la risoluzione dei nomi di macchine virtuali in AzureUsing internal DNS for VM name resolution on Azure

Questo articolo illustra come impostare nomi DNS interni statici per macchine virtuali Linux usando schede di interfaccia di rete virtuale (VNic) e nomi di etichette DNS.This article shows how to set static internal DNS names for Linux VMs using Virtual NIC cards (VNic) and DNS label names. 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:

Versioni dell'interfaccia della riga di comando per completare l'attivitàCLI versions to complete the task

È possibile completare l'attività usando una delle versioni seguenti dell'interfaccia della riga di comando:You can complete the task using one of the following CLI versions:

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 the rest of the document, starting here.

Prerequisiti: gruppo di risorse, rete virtuale, gruppo di sicurezza di rete con SSH in ingresso, subnet.Pre-Requirements: Resource Group, VNet, NSG with SSH inbound, Subnet.

Creare una scheda di interfaccia di rete virtuale con un nome DNS interno staticoCreate a VNic with a static internal DNS name

Il flag dell'interfaccia della riga di comando -r consente di impostare l'etichetta DNS, che indica il nome DNS statico per la scheda di interfaccia di rete virtuale.The -r cli flag is for setting the DNS label, which provides the static DNS name for the VNic.

azure network nic create jenkinsVNic \
-g myResourceGroup \
-l westus \
-m myVNet \
-k mySubNet \
-r jenkins

Distribuire la macchina virtuale nella rete virtuale, associare il gruppo di sicurezza di rete e connettere la scheda di interfaccia di rete virtualeDeploy the VM into the VNet, NSG and, connect the VNic

Il flag -N consente di connette la scheda di interfaccia virtuale alla macchina virtuale durante la distribuzione di Azure.The -N connects the VNic to the new VM during the deployment to Azure.

azure vm create jenkins \
-g myResourceGroup \
-l westus \
-y linux \
-Q Debian \
-o myStorageAcct \
-u myAdminUser \
-M ~/.ssh/id_rsa.pub \
-F myVNet \
-j mySubnet \
-N jenkinsVNic

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 (VNets) and Network Security Groups (NSGs), should be 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 VNet has been deployed, it can be reused by new deployments without any adverse affects to the infrastructure. Aggiungendo a questa rete statica un server repository Git e un server di automazione Jenkins, è possibile distribuire un modello CiCd in un ambiente di test o di sviluppo.Adding to this static network a Git repository server and a Jenkins automation server delivers CiCd to 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.

Sostituire i nomi nell'esempio con nomi personalizzati.Replace any examples with your own naming.

Creare il gruppo di risorseCreate the Resource group

Per organizzare tutti gli elementi creati in questa procedura dettagliata è necessario un gruppo di risorse.A Resource Group is needed to organize everything we create in this walkthrough. Per altre informazioni sui gruppi di risorse di Azure, vedere Panoramica di Azure Resource Manager.For more information on Azure Resource Groups, see Azure Resource Manager overview

azure group create myResourceGroup \
--location westus

Creare la rete virtualeCreate the VNet

Il primo passaggio consiste nella compilazione di una rete virtuale nella quale eseguire le macchine virtuali.The first step is to build a VNet to launch the VMs into. Ai fini di questa procedura, la rete virtuale contiene una subnet.The VNet contains one subnet for this walkthrough. Per altre informazioni sulle reti virtuali di Azure, vedere Creare una rete virtuale (classica) usando l'interfaccia della riga di comando di Azure.For more information on Azure VNets, see Create a virtual network by using the Azure CLI

azure network vnet create myVNet \
--resource-group myResourceGroup \
--address-prefixes 10.10.0.0/24 \
--location westus

Creare il gruppo di sicurezza di reteCreate the NSG

La subnet è protetta da un gruppo di sicurezza di rete esistente che viene creato prima della subnet.The Subnet is built behind an existing Network Security Group so we build the NSG before the Subnet. I gruppi di sicurezza di rete di Azure sono analoghi ai firewall a livello di rete.Azure NSGs are equivalent to a firewall at the network layer. Per altre informazioni sui gruppi di sicurezza di Azure, vedere Come creare gruppi di sicurezza di rete nell'interfaccia della riga di comando di Azure.For more information on Azure NSGs, see How to create NSGs in the Azure CLI

azure network nsg create myNSG \
--resource-group myResourceGroup \
--location westus

Aggiungere una regola di assenso SSH in ingressoAdd an inbound SSH allow rule

La VM Linux deve accedere da Internet, pertanto è necessaria una regola che consenta di lasciare entrare il traffico in ingresso verso la porta 22 della VM Linux.The Linux VM needs access from the internet so a rule allowing inbound port 22 traffic to be passed through the network to port 22 on the Linux VM is needed.

azure network nsg rule create inboundSSH \
--resource-group myResourceGroup \
--nsg-name myNSG \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix * \
--source-port-range * \
--destination-address-prefix 10.10.0.0/24 \
--destination-port-range 22

Aggiungere una subnet alla rete virtualeAdd a subnet to the VNet

Le macchine virtuali all'interno della rete virtuale devono trovarsi in una subnet.VMs within the VNet must be located in a subnet. Ogni rete virtuale può avere più subnet.Each VNet can have multiple subnets. Creare la subnet e associarla al gruppo di sicurezza di rete per aggiungere un firewall alla subnet.Create the subnet and associate the subnet with the NSG to add a firewall to the subnet.

azure network vnet subnet create mySubNet \
--resource-group myResourceGroup \
--vnet-name myVNet \
--address-prefix 10.10.0.0/26 \
--network-security-group-name myNSG

La subnet è ora aggiunta all'interno della rete virtuale e associata a un gruppo di sicurezza di rete e alla relativa regola.The Subnet is now added inside the VNet and associated with the NSG and the NSG rule.

Creazione di nomi DNS staticiCreating static DNS names

Sebbene Azure sia molto flessibile, per poter usare nomi DNS per la risoluzione dei nomi di macchine virtuali, è necessario crearli come schede di interfaccia di rete virtuale mediante l'etichettatura DNS.Azure is very flexible, but to use DNS names for VMs name resolution, you need to create them as Virtual network cards (VNics) using DNS labeling. Le schede di interfaccia di rete virtuale sono importanti in quanto possono essere riusate connettendole ad altre macchine virtuali. In questo senso, la scheda di interfaccia di rete virtuale è una risorsa statica, mentre le macchine virtuali possono essere temporanee.VNics are important as you can reuse them by connecting them to different VMs, which 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 macchine virtuali.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 una scheda di rete virtuale e associarla alla subnet creata nel passaggio precedente.Create a VNic and associate it with the Subnet created in the previous step.

azure network nic create jenkinsVNic \
-g myResourceGroup \
-l westus \
-m myVNet \
-k mySubNet \
-r jenkins

Distribuire la macchina virtuale nella rete virtuale e nel gruppo di sicurezza di reteDeploy the VM into the VNet and NSG

A questo punto sono disponibili una rete virtuale, una subnet all'interno di tale rete virtuale e 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.We now have a VNet, a subnet inside that VNet, and an NSG acting as a firewall to protect our subnet by blocking all inbound traffic except port 22 for SSH. È ora possibile distribuire la macchina virtuale all'interno di questa infrastruttura di rete esistente.The VM can now be deployed inside this existing network infrastructure.

Con l'interfaccia della riga di comando di Azure e il comando azure vm create, la VM Linux viene distribuita nel gruppo di risorse, nella rete virtuale, nella subnet e nella scheda di rete virtuale esistenti.Using the Azure CLI, and the azure vm create command, the Linux VM is deployed to the existing Azure Resource Group, VNet, Subnet, and VNic. Per altre informazioni sull'utilizzo dell'interfaccia della riga di comando per distribuire una macchina virtuale completa, vedere Creare un ambiente Linux completo tramite l'interfaccia della riga di comando di Azure.For more information on using the CLI to deploy a complete VM, see Create a complete Linux environment by using the Azure CLI

azure vm create jenkins \
--resource-group myResourceGroup myVM \
--location westus \
--os-type linux \
--image-urn Debian \
--storage-account-name mystorageaccount \
--admin-username myAdminUser \
--ssh-publickey-file ~/.ssh/id_rsa.pub \
--vnet-name myVNet \
--vnet-subnet-name mySubnet \
--nic-name jenkinsVNic

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