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 AzureRM
não são compatíveis quando instalados para as mesmas versões do PowerShell.
Se precisar de ambas as versões:
- Desinstale o módulo Az a partir de uma sessão do PowerShell 5.1.
- Instale o módulo AzureRM a partir de uma sessão do PowerShell 5.1.
- Transfira e instale o PowerShell Core 6.x ou posterior.
- Instale o módulo Az numa sessão do PowerShell Core.
Antes de iniciar a configuração, verifique se tem os seguintes itens.
- Uma subscrição do Azure. Se ainda não tiver uma subscrição do Azure, pode ativar os Benefícios de subscritor do MSDN ou inscrever-se numa conta gratuita.
- Tem de instalar a versão mais recente dos cmdlets PowerShell do Azure Resource Manager. Para obter mais informações, veja How to install and configure Azure PowerShell (Como instalar e configurar o Azure PowerShell).
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-AzDnsZone
o , 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.