Como gerir Zonas DNS com o PowerShell

Este artigo mostra-lhe como gerir as suas zonas DNS com Azure PowerShell. Também pode gerir as suas zonas DNS com a CLI do Azure entre plataformas ou a portal do Azure.

Este guia aborda especificamente as zonas DNS Públicas. Para obter informações sobre como utilizar Azure PowerShell para gerir Zonas Privadas no DNS do Azure, veja Introdução às Zonas Privadas do DNS do Azure com Azure PowerShell.

Uma zona DNS é utilizada para alojar os registos DNS para um determinado domínio. Para começar a alojar o seu domínio no DNS do Azure, tem de criar uma zona DNS para esse nome de domínio. Cada registo DNS para o seu domínio é então criado no interior desta zona DNS.

Por exemplo, o domínio “contoso.com” pode conter vários registos DNS, como “mail.contoso.com” (para um servidor de e-mail) e “www.contoso.com” (para um Web site).

Ao criar uma zona DNS no Azure DNS:

  • O nome da zona deve ser exclusivo dentro do grupo de recursos e a zona não pode já existir. Caso contrário, a operação falha.
  • O mesmo nome de zona pode ser reutilizado num grupo de recursos diferente ou numa subscrição diferente do Azure.
  • Onde as várias zonas partilham o mesmo nome, cada instância é atribuída a diferentes endereços do servidor do nome. Apenas um conjunto de endereços pode ser configurado com a entidade de registo de nome de domínio.

Nota

Não é necessário possuir um nome de domínio para criar uma zona DNS com esse nome de domínio no DNS do Azure. No entanto, tem de ser o proprietário do domínio para configurar os servidores de nomes DNS do Azure como os servidores de nomes corretos para o nome de domínio com a entidade de registo do nome de domínio.

Para obter mais informações, veja Delegar um domínio ao DNS do Azure.

Configurar o Azure PowerShell para o DNS do Azure

Antes de começar

Importante

A utilização desta funcionalidade do Azure a partir do PowerShell requer a instalação do AzureRM módulo. Este é um módulo mais antigo disponível apenas para Windows PowerShell 5.1 que já não recebe novas funcionalidades. Os Az módulos e AzureRMnão são compatíveis quando instalados para as mesmas versões do PowerShell. Se precisar de ambas as versões:

  1. Desinstale o módulo Az a partir de uma sessão do PowerShell 5.1.
  2. Instale o módulo AzureRM a partir de uma sessão do PowerShell 5.1.
  3. Transfira e instale o PowerShell Core 6.x ou posterior.
  4. Instale o módulo Az numa sessão do PowerShell Core.

Antes de iniciar a configuração, verifique se tem os seguintes itens.

Inicie sessão na sua conta do Azure

Abra a consola do PowerShell e ligue-se à sua conta. Para obter mais informações, consulte Iniciar sessão com Azure PowerShell.

Connect-AzAccount

Selecionar a subscrição

Verifique as subscrições da conta.

Get-AzSubscription

Escolha qual das subscrições do Azure utilizar.

Select-AzSubscription -SubscriptionName "your_subscription_name"

Criar um grupo de recursos

O Azure Resource Manager requer que todos os grupos de recursos especifiquem uma localização. que é utilizada como a localização predefinida para os recursos nesse grupo de recursos. No entanto, uma vez que todos os recursos DNS são globais, não regionais, a opção de localização do grupo de recursos não tem impacto no DNS do Azure.

Pode ignorar este passo se estiver a utilizar um grupo de recursos existente.

New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"

Criar uma zona DNS

Uma zona DNS é criada ao utilizar o cmdlet New-AzDnsZone.

O exemplo seguinte cria uma zona DNS denominada contoso.com no grupo de recursos denominado MyDNSResourceGroup:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

O exemplo seguinte mostra como criar uma zona DNS com duas etiquetas de Resource Manager do Azure, project = demonstração e env = teste:

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

Obter uma zona DNS

Para obter uma zona DNS, utilize o Get-AzDnsZone cmdlet. Esta operação devolve um objeto de zona DNS correspondente a uma zona existente no DNS do Azure. O objeto contém dados sobre a zona (como o número de conjuntos de registos), mas não contém os próprios conjuntos de registos (consulte 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

Listar zonas DNS

Ao omitir o nome da zona de Get-AzDnsZone, pode enumerar todas as zonas de um grupo de recursos. Esta operação devolve uma matriz de objetos de zona.

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

Ao omitir o nome da zona e o nome do grupo de recursos de Get-AzDnsZone, pode enumerar todas as zonas na subscrição do Azure.

$zoneList = Get-AzDnsZone
$zoneList

Atualizar uma zona DNS

É possível efetuar alterações a um recurso de zona DNS com Set-AzDnsZone. Este cmdlet não atualiza nenhum dos conjuntos de registos DNS na zona (veja Como Gerir registos DNS). Só é utilizado para atualizar propriedades do recurso da própria zona. As propriedades de zona gravável estão atualmente limitadas às "etiquetas" Resource Manager do Azure para o recurso de zona.

Utilize uma das duas formas seguintes de atualizar uma zona DNS:

Especifique a zona com o nome da zona e o grupo de recursos

Esta abordagem substitui as etiquetas de zona existentes pelos valores especificados.

Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Especifique o horário com um objeto de $zone

Esta abordagem obtém o objeto de zona existente, modifica as etiquetas e, em seguida, consolida as alterações. Desta forma, as etiquetas existentes podem ser preservadas.

# 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 utiliza Set-AzDnsZone com um objeto $zone, as verificações Etag são utilizadas para garantir que as alterações simultâneas não são substituídas. Pode utilizar o comutador opcional -Overwrite para suprimir estas verificações.

Eliminar uma Zona DNS

As zonas DNS podem ser eliminadas com o Remove-AzDnsZone cmdlet.

Nota

A eliminação de uma zona DNS também elimina todos os registos DNS na zona. Esta operação não pode ser anulada. Se a zona DNS estiver em utilização, os serviços que utilizam a zona irão falhar quando a zona for eliminada.

Para proteção contra a eliminação acidental de uma zona, veja Como proteger zonas e registos DNS.

Utilize uma das duas formas seguintes para eliminar uma zona DNS:

Especifique a zona com o nome da zona e o nome do grupo de recursos

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Especifique o horário com um objeto de $zone

Pode especificar a zona a eliminar com um objeto $zone devolvido por Get-AzDnsZone.

$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone

O objeto de zona também pode ser direcionado, em vez de ser transmitido como um parâmetro:

Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone

Tal como acontece com Set-AzDnsZoneo , especificar a zona com um $zone objeto permite que as verificações do Etag garantam que as alterações simultâneas não são eliminadas. Utilize o -Overwrite comutador para suprimir estas verificações.

Pedidos de confirmação

Todos os cmdlets New-AzDnsZone, Set-AzDnsZone e Remove-AzDnsZone suportam pedidos de confirmação.

New-AzDnsZone e Set-AzDnsZone pedem a confirmação, se a variável de preferência $ConfirmPreference do PowerShell tiver um valor de Medium ou inferior. Uma vez que eliminar uma zona DNS pode potencialmente causar condições indesejadas, o Remove-AzDnsZone cmdlet pede confirmação se a variável do $ConfirmPreference PowerShell tem outro valor que não None.

Dado que o valor predefinido para $ConfirmPreference é High, apenas Remove-AzDnsZone solicita a confirmação por predefinição.

Pode substituir a definição $ConfirmPreference atual com o parâmetro -Confirm. Se especificar -Confirm ou -Confirm:$True , o cmdlet irá pedir-lhe a confirmação antes de ser executado. Se especificar -Confirm:$False , o cmdlet não lhe pede confirmação.

Para obter mais informações sobre -Confirm e $ConfirmPreference, veja Sobre as Variáveis de Preferência.

Passos seguintes

Saiba como gerir conjuntos de registos e registos na sua zona DNS.
Saiba como delegar o seu domínio ao DNS do Azure.
Veja a documentação de referência do PowerShell do DNS do Azure.