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.