Como gerenciar zonas DNS usando o PowerShell
Este artigo mostra como gerenciar suas zonas DNS usando o Azure PowerShell. Você também pode gerenciar suas zonas DNS usando a CLI do Azure de plataforma cruzada ou o portal do Azure.
Este guia trata especificamente de zonas DNS públicas. Para obter informações sobre como usar o Azure PowerShell para gerenciar Zonas Privadas no DNS do Azure, consulte Introdução às Zonas Privadas do DNS do Azure usando o Azure PowerShell.
Uma zona DNS é utilizada para alojar os registos DNS para um domínio particular. 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
Usar esse recurso do Azure do PowerShell requer o AzureRM
módulo instalado. Este é um módulo mais antigo disponível apenas para o Windows PowerShell 5.1 que não recebe mais novos recursos.
Os Az
módulos e AzureRM
não são compatíveis quando instalados para as mesmas versões do PowerShell.
Se você precisar de ambas as versões:
- Desinstale o módulo Az de uma sessão do PowerShell 5.1.
- Instale o módulo AzureRM a partir de uma sessão do PowerShell 5.1.
- Baixe e instale o PowerShell Core 6.x ou posterior.
- Instale o módulo Az em uma 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 Entrar com o Azure PowerShell.
Connect-AzAccount
Selecionar a subscrição
Verifique as subscrições da conta.
Get-AzSubscription
Escolha qual das suas 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 a seguir cria uma zona DNS chamada contoso.com no grupo de recursos chamado MyDNSResourceGroup:
New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
O exemplo a seguir mostra como criar uma zona DNS com duas tags do Azure Resource Manager, project = demo e env = test:
New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }
Obter uma zona DNS
Para recuperar uma zona DNS, use o Get-AzDnsZone
cmdlet. Esta operação retorna 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 registros), mas não contém os próprios conjuntos de registros (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 registros DNS dentro da zona (consulte Como gerenciar registros DNS). Só é utilizado para atualizar propriedades do recurso da própria zona. As propriedades da zona gravável estão atualmente limitadas às 'tags' do Azure Resource Manager para o recurso de zona.
Use uma das duas maneiras a seguir para atualizar uma zona DNS:
Especificar a zona usando o nome da zona e o grupo de recursos
Essa abordagem substitui as marcas 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
Essa abordagem recupera o objeto de zona existente, modifica as tags e confirma as alterações. Desta forma, as tags 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 você usa Set-AzDnsZone
com um objeto $zone, as verificações de Etag são usadas para garantir que as alterações simultâneas não sejam substituídas. Você pode usar a opção opcional -Overwrite
para suprimir essas verificações.
Excluir uma zona DNS
As zonas DNS podem ser excluídas usando 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
Assim como no Set-AzDnsZone
, especificar a zona usando um $zone
objeto permite verificações Etag para garantir que alterações simultâneas não sejam excluídas. Use a -Overwrite
opção para suprimir essas 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. Como a exclusão de uma zona DNS pode potencialmente causar condições indesejadas, o Remove-AzDnsZone
cmdlet solicita a confirmação se a $ConfirmPreference
variável PowerShell tiver algum valor diferente de 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 você especificar -Confirm:$False
, o cmdlet não solicitará a confirmação.
Para obter mais informações sobre -Confirm
e $ConfirmPreference
, veja Sobre as Variáveis de Preferência.
Próximos passos
Saiba como gerir conjuntos de registos e registos na sua zona DNS.
Saiba como delegar seu domínio ao DNS do Azure.
Analise a documentação de referência do Azure DNS PowerShell.