Come gestire le zone DNS utilizzando PowerShell
Questo articolo spiega come gestire una zona DNS mediante Azure PowerShell. È anche possibile gestire le zone DNS usando l'interfaccia della riga di comando di Azure multipiattaforma o il portale di Azure.
Questa guida è incentrata in particolare sulle zone DNS pubbliche. Per informazioni sull'uso di Azure PowerShell per gestire Zone private di DNS di Azure, vedere Introduzione alle zone private di Azure DNS con PowerShell.
Una zona DNS viene usata per ospitare i record DNS per un dominio specifico. Per iniziare a ospitare il dominio in DNS di Azure, è necessario creare una zona DNS per il nome di dominio. Ogni record DNS per il dominio viene quindi creato all'interno di questa zona DNS.
Il dominio "contoso.com", ad esempio, può contenere diversi record DNS, come "mail.contoso.com" (per un server di posta) e "www.contoso.com" (per un sito Web).
Creazione di una zona DNS in DNS di Azure:
- Il nome della zona deve essere univoco all'interno del gruppo di risorse e la zona non deve esistere già, altrimenti l'operazione non riesce.
- Lo stesso nome di zona può essere usato di nuovo in un gruppo di risorse diverso o in un'altra sottoscrizione di Azure.
- Se più zone condividono lo stesso nome, a ogni istanza vengono assegnati indirizzi di server dei nomi diversi. È possibile configurare solo un set di indirizzi con il registrar.
Nota
Non è necessario essere proprietari di un dominio per creare una zona DNS con questo nome di dominio in DNS di Azure, ma è necessario essere proprietari del dominio per configurare i server dei nomi DNS di Azure come server dei nomi corretti per il nome di dominio con il registrar.
Per altre informazioni, vedere Delegare un dominio a DNS di Azure.
Configurare Azure PowerShell per DNS di Azure
Operazioni preliminari
Importante
Se si usa questa funzionalità di Azure da PowerShell, è necessario che sia installato il modulo AzureRM
. Si tratta di un modulo meno recente, disponibile solo per Windows PowerShell 5.1.x, che non riceve più le nuove funzionalità.
I moduli Az
e AzureRM
non sono compatibili con quando vengono installati per le stesse versioni di PowerShell.
Se sono necessarie entrambe le versioni:
- Disinstallare il modulo Az da una sessione di PowerShell 5.1.
- Installare il modulo AzureRM da una sessione di PowerShell 5.1.
- Scaricare e installare PowerShell Core 6.x o versioni successive.
- Installare il modulo Az in una sessione di PowerShell Core.
Prima di iniziare la configurazione, verificare di essere in possesso degli elementi seguenti.
- Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, è possibile attivare i vantaggi per i sottoscrittori di MSDN oppure iscriversi per ottenere un account gratuito.
- È necessario installare la versione più recente dei cmdlet di PowerShell per Azure Resource Manager. Per altre informazioni, vedere Come installare e configurare Azure PowerShell.
Accedere con l'account Azure
Aprire la console di PowerShell e connettersi al proprio account. Per altre informazioni, vedere Accedere con Azure PowerShell.
Connect-AzAccount
Selezionare la sottoscrizione
Controllare le sottoscrizioni per l'account.
Get-AzSubscription
Scegliere quali sottoscrizioni Azure usare.
Select-AzSubscription -SubscriptionName "your_subscription_name"
Creare un gruppo di risorse
Gestione risorse di Azure richiede che tutti i gruppi di risorse specifichino un percorso che viene usato come percorso predefinito per le risorse presenti in tale gruppo di risorse. Tuttavia, dato che tutte le risorse DNS sono globali, non regionali, la scelta del percorso del gruppo di risorse non ha alcun impatto sul servizio DNS di Azure.
Se si usa un gruppo di risorse esistente, è possibile ignorare questo passaggio.
New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"
Creare una zona DNS
Viene creata una zona DNS con il cmdlet New-AzDnsZone
.
L'esempio seguente crea una zona DNS denominata contoso.com nel gruppo di risorse denominato MyDNSResourceGroup:
New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
L'esempio seguente illustra come creare una zona DNS con due tag di Azure Resource Manager, project = demo e env = test:
New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }
Ottenere una zona DNS
Per recuperare una zona DNS, usare il cmdlet Get-AzDnsZone
. Questa operazione restituisce un oggetto di zona DNS corrispondente a una zona esistente nel servizio DNS di Azure. L'oggetto contiene i dati sulla zona (ad esempio il numero di set di record), ma non contiene i set di record stessi (vedere Get-AzDnsRecordSet
).
Get-AzDnsZone -Name contoso.com –ResourceGroupName MyDNSResourceGroup
Name : contoso.com
ResourceGroupName : myresourcegroup
Etag : 00000003-0000-0000-8ec2-f4879750d201
Tags : {project, env}
NameServers : {ns1-01.azure-dns.com., ns2-01.azure-dns.net., ns3-01.azure-dns.org.,
ns4-01.azure-dns.info.}
NumberOfRecordSets : 2
MaxNumberOfRecordSets : 5000
Elencare le zone DNS
Omettendo il nome della zona da Get-AzDnsZone
, è possibile enumerare tutte le zone in un gruppo di risorse. Questa operazione restituisce una matrice di oggetti di zona.
$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList
Omettendo il nome della zona e il nome del gruppo di risorse da Get-AzDnsZone
, è possibile enumerare tutte le zone nella sottoscrizione di Azure.
$zoneList = Get-AzDnsZone
$zoneList
Aggiornare una zona DNS
È possibile apportare modifiche a una risorsa di zona DNS usando Set-AzDnsZone
. Questo cmdlet non consente di aggiornare i set di record DNS compresi nella zona (vedere Come gestire i record DNS). Questa operazione permette solo di aggiornare le proprietà della risorsa di zona stessa. Le proprietà della zona scrivibile sono attualmente limitate ai "tag" di Azure Resource Manager relativi alla risorsa di zona.
Usare una delle due opzioni seguenti per aggiornare una zona DNS:
Specificare la zona usando il nome della zona e del gruppo di risorse.
Questo approccio sostituisce i tag di zona esistenti con i valori specificati.
Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }
Specificare la zona usando un oggetto $zone
Questo approccio recupera l'oggetto zona esistente, modifica i tag e quindi esegue il commit delle modifiche. Ciò consente di conservare i tag esistenti.
# Get the zone object
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
# Remove an existing tag
$zone.Tags.Remove("project")
# Add a new tag
$zone.Tags.Add("status","approved")
# Commit changes
Set-AzDnsZone -Zone $zone
Quando si usa Set-AzDnsZone
con un oggetto $zone, i controlli ETag vengono usati per verificare che le modifiche simultanee non vengano sovrascritte. È possibile usare l'opzione facoltativa -Overwrite
per disattivare tali controlli.
Eliminare una zona DNS
Le zone DNS possono essere eliminate usando il cmdlet Remove-AzDnsZone
.
Nota
L'eliminazione di una zona DNS comporta anche l'eliminazione di tutti i record DNS all'interno della zona. Questa operazione non può essere annullata. Se la zona DNS è in uso, i servizi che la usano rileveranno un errore quando la zona viene eliminata.
Per evitare l'eliminazione accidentale di una zona, vedere How to protect DNS zones and records (Come proteggere le zone e i record DNS).
Usare una delle due opzioni seguenti per eliminare la zona DNS:
Specificare la zona usando il nome della zona e del gruppo di risorse:
Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Specificare la zona usando un oggetto $zone
È possibile specificare la zona da eliminare usando un oggetto $zone
restituito da Get-AzDnsZone
.
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone
L'oggetto di zona può essere anche reindirizzato invece che passato come parametro:
Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone
Come con Set-AzDnsZone
, specificando la zona usando un oggetto $zone
è possibile abilitare i controlli ETag per garantire che le modifiche simultanee non vengano eliminate. Usare l'opzione -Overwrite
per disattivare tali controlli.
Richieste di conferma
I cmdlet New-AzDnsZone
, Set-AzDnsZone
e Remove-AzDnsZone
supportano le richieste di conferma.
New-AzDnsZone
e Set-AzDnsZone
richiedono la conferma se la variabile di preferenza $ConfirmPreference
di PowerShell ha un valore uguale o inferiore a Medium
. A causa dell'impatto potenzialmente significativo dell'eliminazione di una zona DNS, il cmdlet Remove-AzDnsZone
richiede la conferma se la variabile $ConfirmPreference
di PowerShell ha un valore diverso da None
.
Poiché il valore predefinito per $ConfirmPreference
è High
, solo Remove-AzDnsZone
richiede la conferma per impostazione predefinita.
Per eseguire l'override dell'impostazione $ConfirmPreference
corrente è possibile usare il parametro -Confirm
. Se si specifica -Confirm
o -Confirm:$True
, il cmdlet chiede conferma prima dell'esecuzione. Se si specifica -Confirm:$False
, il cmdlet non chiede alcuna conferma.
Per altre informazioni su -Confirm
e $ConfirmPreference
, vedere About Preference Variables (Informazioni sulle variabili di preferenza).
Passaggi successivi
Informazioni su come gestire record e set di record nella zona DNS.
Informazioni su come delegare il dominio al servizio DNS di Azure.
Vedere la documentazione di riferimento di PowerShell nel servizio DNS di Azure.