Creare schede di interfaccia di rete virtuale e usare DNS interni per la risoluzione dei nomi di VM in Azure

Si applica a: ✔️ set di scalabilità flessibili di macchine virtuali ✔️ Linux

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

I requisiti sono:

Comandi rapidi

Se si vuole eseguire rapidamente l'attività, la sezione seguente indica dettagliatamente i comandi necessari. Le informazioni e il contesto più dettagliati per ogni passaggio sono disponibili nel resto del documento, a partire da qui. Per eseguire questi passaggi è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure e aver effettuato l'accesso a un account Azure con il comando az login.

Pre-requisiti: gruppo di risorse, rete virtuale e subnet, gruppo di sicurezza di rete con SSH in ingresso.

Creare una scheda di interfaccia di rete virtuale con un nome DNS interno statico

Creare la vNic con il comando 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). 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:

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 virtuale

Creare una VM con il comando az vm create. Il flag --nics consente di connette la scheda di interfaccia di rete virtuale alla VM durante la distribuzione in 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:

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

Procedura dettagliata

In Azure, un'infrastruttura interamente basata sul modello CiCd (Continuous Integration and Continuous Deployment) richiede la disponibilità di server statici o di lunga durata. È consigliabile che gli asset di Azure come le reti virtuali e i gruppi di sicurezza di rete siano risorse statiche e di lunga durata che raramente vengono distribuite. Una volta distribuita una rete virtuale, può essere riutilizzata nelle nuove distribuzioni senza alcun impatto negativo sull'infrastruttura. È 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.

I nomi DNS interni sono risolvibili solo all'interno di una rete virtuale di Azure. Poiché i nomi DNS sono interni, non sono risolvibili all'esterno di Internet, fornendo maggiore sicurezza all'infrastruttura.

Nell'esempio seguente sostituire i nomi dei parametri di esempio con i valori desiderati. Alcuni esempi di nomi dei parametri sono myResourceGroup, myNic e myVM.

Creare il gruppo di risorse

Creare prima il gruppo di risorse con az group create. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroup nella località westus:

az group create --name myResourceGroup --location westus

Creare la rete virtuale

Il passaggio successivo è creare una rete virtuale in cui avviare le VM. Ai fini di questa procedura, la rete virtuale contiene una subnet. Per altre informazioni sulle reti virtuali di Azure, vedere Create a virtual network (Creare una rete virtuale).

Creare la rete virtuale con az network vnet create. L'esempio seguente creata una rete virtuale denominata myVnet e una sottorete denominata 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 rete

I gruppi di sicurezza di rete di Azure sono analoghi a un firewall a livello di rete. 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.

Creare il gruppo di sicurezza di rete con az network nsg create. Nell'esempio seguente viene creato un gruppo di sicurezza di rete denominato myNetworkSecurityGroup:

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

Aggiungere una regola in entrata per consentire SSH

Aggiungere una regole in ingresso per il gruppo di sicurezza di rete con az network nsg rule create. Nell'esempio seguente viene creata una regola denominata 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 rete

Per associare la subnet con il gruppo di sicurezza di rete usare az network vnet subnet update. L'esempio seguente associa il nome di subnet mySubnet al gruppo di sicurezza di rete 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 statici

Per usare i nomi DNS per la risoluzione dei nomi delle macchine virtuali, è necessario creare schede di interfaccia di rete virtuale (vNics) che includono un'etichetta DNS. Le schede di interfaccia di rete virtuale sono importanti in quanto è possibile riutilizzarle connettendole a VM differenti nel ciclo di vita dell'infrastruttura. In questo modo la scheda di interfaccia di rete virtuale diventa una risorsa statica, mentre le VM possono essere temporanee. Usando l'etichettatura DNS nella rete virtuale, è possibile abilitare la risoluzione dei nomi semplice da altre macchine virtuali nella rete virtuale. 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.

Creare la vNic con il comando 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:

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 virtuale

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. Ora è possibile distribuire una VM all'interno di questa infrastruttura di rete esistente.

Creare una VM con il comando 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:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --nics myNic \
    --image Ubuntu2204 \
    --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. 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.

Passaggi successivi