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.

Una zona DNS viene usata per ospitare i record DNS per un particolare dominio. 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

Prima di iniziare

Prima di iniziare la configurazione, verificare di essere in possesso degli elementi seguenti.

Accedere con l'account Azure

Aprire la console di PowerShell e connettersi al proprio account. Per altre informazioni, vedere Uso di PowerShell con Resource Manager.

Login-AzureRmAccount

Selezionare la sottoscrizione

Controllare le sottoscrizioni per l'account.

Get-AzureRmSubscription

Scegliere le sottoscrizioni ad Azure da usare.

Select-AzureRmSubscription -SubscriptionName "your_subscription_name"

Creare un gruppo di risorse

Azure Resource Manager richiede che tutti i gruppi di risorse specifichino una località. 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-AzureRmResourceGroup -Name MyAzureResourceGroup -location "West US"

Registrare il provider di risorse

Il servizio DNS di Azure viene gestito dal provider di risorse Microsoft.Network. Per poter usare il servizio DNS di Azure, la sottoscrizione di Azure deve essere registrata per l'uso di questo provider di risorse. Questa operazione viene eseguita una sola volta per ogni sottoscrizione.

Register-AzureRmResourceProvider -ProviderNamespace Microsoft.Network

Creare una zona DNS

Viene creata una zona DNS con il cmdlet New-AzureRmDnsZone .

L'esempio seguente crea una zona DNS denominata contoso.com nel gruppo di risorse denominato MyResourceGroup:

New-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup

L'esempio seguente illustra come creare una zona DNS con due tag di Azure Resource Manager, project = demo e env = test:

New-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup -Tag @{ project="demo"; env="test" }

Ottenere una zona DNS

Per recuperare una zona DNS, usare il cmdlet Get-AzureRmDnsZone . 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-AzureRmDnsRecordSet).

Get-AzureRmDnsZone -Name contoso.com –ResourceGroupName MyAzureResourceGroup

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-AzureRmDnsZone, è possibile enumerare tutte le zone in un gruppo di risorse. Questa operazione restituisce una matrice di oggetti di zona.

$zoneList = Get-AzureRmDnsZone -ResourceGroupName MyAzureResourceGroup

Omettendo il nome della zona e il nome del gruppo di risorse da Get-AzureRmDnsZone, è possibile enumerare tutte le zone nella sottoscrizione di Azure.

$zoneList = Get-AzureRmDnsZone

Aggiornare una zona DNS

È possibile apportare modifiche a una risorsa di zona DNS usando Set-AzureRmDnsZone. Il cmdlet non consente di aggiornare alcuni dei 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-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup -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-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup

# Remove an existing tag
$zone.Tags.Remove("project")

# Add a new tag
$zone.Tags.Add("status","approved")

# Commit changes
Set-AzureRmDnsZone -Zone $zone

Quando si usa Set-AzureRmDnsZone 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-AzureRmDnsZone.

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-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup

Specificare la zona usando un oggetto $zone

È possibile specificare la zona da eliminare usando un oggetto $zone restituito da Get-AzureRmDnsZone.

$zone = Get-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup
Remove-AzureRmDnsZone -Zone $zone

L'oggetto di zona può essere anche reindirizzato invece che passato come parametro:

Get-AzureRmDnsZone -Name contoso.com -ResourceGroupName MyAzureResourceGroup | Remove-AzureRmDnsZone

Come con Set-AzureRmDnsZone, specificare la zona usando un oggetto $zone consente di 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-AzureRmDnsZone, Set-AzureRmDnsZone e Remove-AzureRmDnsZone supportano le richieste di conferma.

New-AzureRmDnsZone e Set-AzureRmDnsZone 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-AzureRmDnsZone richiede la conferma se la variabile $ConfirmPreference di PowerShell ha un valore diverso da None.

Poiché il valore predefinito per $ConfirmPreference è High, solo Remove-AzureRmDnsZone 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.