Cómo administrar zonas DNS con PowerShell
En este artículo se muestra cómo administrar sus zonas DNS mediante Azure PowerShell. También se pueden administrar las zonas DNS mediante la CLI de Azure multiplataforma o Azure Portal.
Esta guía trata específicamente con las zonas DNS públicas. Para obtener información acerca del uso de Azure PowerShell para administrar zonas privadas en Azure DNS, consulte Get started with Azure DNS Private Zones using Azure CLI 2.0 (Introducción a Azure DNS Private Zones con Azure PowerShell).
Una zona DNS se usa para hospedar los registros DNS de un dominio concreto. Para iniciar el hospedaje de su dominio en DNS de Azure, debe crear una zona DNS para ese nombre de dominio. Cada registro DNS del dominio se crea luego en esta zona DNS.
Por ejemplo, puede que el dominio "contoso.com" contenga varios registros DNS, como "mail.contoso.com" (para un servidor de correo) y "www.contoso.com" (para un sitio web).
Al crear una zona DNS de Azure DNS:
- El nombre de la zona debe ser único en el grupo de recursos y la zona no debe existir aún. De lo contrario, la operación presentará un error.
- El mismo nombre de zona podrá reutilizarse en otro grupo de recursos o en otra suscripción de Azure.
- Cuando varias zonas comparten el mismo nombre, se asigna a cada instancia diferentes direcciones del servidor. Solo se puede configurar un único conjunto de direcciones con el registrador de nombres de dominio.
Nota:
No tiene que poseer un nombre de dominio para crear una zona DNS con dicho nombre de dominio en DNS de Azure. Sin embargo, es necesario ser propietario del dominio para configurar los servidores de nombres en DNS de Azure como los servidores de nombres correctos para el nombre de dominio con el registrador de nombres de dominio.
Para más información, vea Delegación de un dominio en DNS de Azure.
Configuración de Azure PowerShell para Azure DNS
Antes de empezar
Importante
El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM
instalado. Se trata de un módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características.
Los módulos Az
y AzureRM
no son compatibles cuando se instalan para las mismas versiones de PowerShell.
Si necesita ambas versiones:
- Desinstale el módulo Az desde una sesión de PowerShell 5.1.
- Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
- Descargue e instale PowerShell Core 6.x o posterior.
- Instale el módulo Az en una sesión de PowerShell Core.
Antes de comenzar con la configuración, compruebe que dispone de los elementos siguientes.
- Suscripción a Azure. Si todavía no la tiene, puede activar sus ventajas como suscriptor de MSDN o registrarse para obtener una cuenta gratuita.
- Necesitará instalar la versión más reciente de los cmdlets de PowerShell de Azure Resource Manager. Para obtener más información, consulte Instalación y configuración de Azure PowerShell.
Inicio de sesión en la cuenta de Azure.
Abre la consola de PowerShell y conéctate a tu cuenta. Para obtener más información, consulte Inicio de sesión con Azure PowerShell.
Connect-AzAccount
Selección de la suscripción
Compruebe las suscripciones para la cuenta.
Get-AzSubscription
Elección de la suscripción de Azure que se va a usar.
Select-AzSubscription -SubscriptionName "your_subscription_name"
Crear un grupo de recursos
Azure Resource Manager requiere que todos los grupos de recursos especifiquen una ubicación. Esta ubicación se utiliza como ubicación predeterminada para los recursos de ese grupo de recursos. Sin embargo, puesto que todos los recursos DNS son globales y no regionales, la elección de la ubicación del grupo de recursos no incide en DNS de Azure.
Puede omitir este paso si utiliza un grupo de recursos existente.
New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"
Creación de una zona DNS
Una zona DNS se crea mediante el cmdlet New-AzDnsZone
.
En el ejemplo siguiente, se crea una zona DNS llamada contoso.com en el grupo de recursos MyDNSResourceGroup:
New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
En el ejemplo siguiente se muestra cómo crear una zona DNS con dos etiquetas Azure Resource Manager, project = demo y env = test:
New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }
Recuperación de una zona DNS
Para recuperar una zona DNS, use el cmdlet Get-AzDnsZone
. Esta operación devuelve un objeto de la zona DNS correspondiente a una zona existente en DNS de Azure. El objeto contiene datos sobre la zona (por ejemplo, el número de conjuntos de registros), pero no contiene los 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
Enumeración de zonas DNS
Si se omite el nombre de la zona de Get-AzDnsZone
, puede enumerar todas las zonas en un grupo de recursos. Esta operación devuelve una matriz de objetos de la zona.
$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList
Si se omite tanto el nombre de zona como el nombre del grupo de recursos de Get-AzDnsZone
, puede enumerar todas las zonas de la suscripción de Azure.
$zoneList = Get-AzDnsZone
$zoneList
Actualización de una zona DNS
Los cambios en los recursos de una zona DNS se pueden realizar mediante Set-AzDnsZone
. Este cmdlet no actualiza ninguno de los conjuntos de registros de DNS de la zona (consulte Administración de registros DNS). Solo se utiliza para actualizar las propiedades de los recursos de la zona. Las propiedades de zona que se pueden escribir están actualmente limitadas a las "etiquetas" Azure Resource Manager para el recurso de la zona.
Utilice una de las dos opciones siguientes para actualizar una zona DNS:
Especificar la zona con la utilización del nombre de zona y el grupo de recursos
Este método reemplaza las etiquetas de zona existentes con los valores especificados.
Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }
Especificar la zona utilizando un objeto $zone
Este método recupera el objeto de zona existente, modifica las etiquetas y, a continuación, confirma los cambios. De este modo, se pueden conservar las etiquetas existentes.
# 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
Al usar Set-AzDnsZone
con un objeto $zone, se usan las comprobaciones de ETag para garantizar que no se sobrescriben los cambios simultáneos. Puede usar el modificador -Overwrite
opcional para suprimir estas comprobaciones.
Eliminación de una zona DNS
Las zonas DNS se pueden eliminar mediante el cmdlet Remove-AzDnsZone
.
Nota:
Si se elimina una zona DNS, también se eliminan todos los registros DNS dentro de la zona. No se puede deshacer esta operación. Si la zona DNS está en uso, los servicios con la zona provocarán un error cuando se elimina la zona.
Para protegerse contra la eliminación accidental de zona, consulte Proteger registros y zonas DNS.
Utilice una de las dos opciones siguientes para eliminar una zona DNS:
Especificar la zona con la utilización del nombre de zona y el nombre del grupo de recursos
Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Especificar la zona utilizando un objeto $zone
Puede especificar la zona que desee eliminar mediante un objeto $zone
devuelto por Get-AzDnsZone
.
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone
También se puede canalizar el objeto de la zona en lugar de pasarlo como parámetro:
Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone
Como con Set-AzDnsZone
, especificar la zona usando un objeto $zone
permite realizar las comprobaciones de ETag para asegurarse de que no se eliminen los cambios simultáneos. Use el modificador -Overwrite
para suprimir estas comprobaciones.
Mensajes de confirmación
Los cmdlets New-AzDnsZone
, Set-AzDnsZone
y Remove-AzDnsZone
todos admiten mensajes de confirmación.
Ambos New-AzDnsZone
y Set-AzDnsZone
piden confirmación si la variable de preferencia de PowerShell $ConfirmPreference
tiene un valor de Medium
o inferior. Dado que la eliminación de una zona DNS puede provocar condiciones no deseadas, el cmdlet Remove-AzDnsZone
pide confirmación si la variable $ConfirmPreference
de PowerShell tiene cualquier valor distinto de None
.
Puesto que el valor predeterminado para $ConfirmPreference
es High
, solo Remove-AzDnsZone
pide confirmación de forma predeterminada.
Puede invalidar el valor actual de $ConfirmPreference
mediante el parámetro -Confirm
. Si especifica -Confirm
o -Confirm:$True
, el cmdlet solicita confirmación antes de ejecutarse. Si especifica -Confirm:$False
, el cmdlet no le pide la confirmación.
Para más información sobre -Confirm
y $ConfirmPreference
, consulte About Preference Variables (Acerca de las variables de preferencias).
Pasos siguientes
En esta guía se explica cómo administrar conjuntos de registros y registros en la zona DNS.
Aprenda a cómo delegar el dominio a Azure DNS.
Revise la documentación de referencia de PowerShell para Azure DNS.