Instalación
El CLI de NexDNS es un binario único sin dependencias externas. Elige el método de instalación que se adapte a tu entorno.
Instalación rápida (Linux / macOS)
curl -sL https://get.nexdns.tech/cli | sh
Homebrew
brew install nexdns/tap/nexdns-cli
Docker
docker pull nexdns/cli
Verificar la instalación
Después de instalar, confirma que el CLI está disponible y verifica su versión:
nexdns version
Autenticación
El CLI requiere un token API para comunicarse con la API de NexDNS. Puedes crear un token en nexdns.tech/settings/api-keys.
Guardar token en la configuración
nexdns auth token nxd_xxxxxxxxxxxxxxxxxxxx
Variable de entorno (CI/CD)
export NEXDNS_TOKEN=nxd_xxxxxxxxxxxxxxxxxxxx
Verificar estado de autenticación
nexdns auth status
Archivo de configuración
El token se almacena en ~/.nexdns/config.yaml. El CLI resuelve las credenciales en el siguiente orden de prioridad:
- Opción
--token(prioridad más alta) - Variable de entorno
NEXDNS_TOKEN - Archivo de configuración
~/.nexdns/config.yaml
Gestión de zonas
Gestiona zonas DNS desde la línea de comandos. Todos los comandos de zona están bajo el subcomando nexdns zone.
Listar zonas
nexdns zone list
Añadir una zona
nexdns zone add example.com --ns-group eu
Información de la zona
nexdns zone info example.com
Exportar zona (formato BIND)
nexdns zone export example.com
Importar archivo de zona
Usa --dry-run para previsualizar los cambios antes de aplicarlos:
nexdns zone import example.com zone.txt --dry-run
Asegurar que la zona existe
Crea la zona solo si no existe aún (idempotente):
nexdns zone ensure example.com
Verificar el estado de la zona
nexdns zone check example.com
Eliminar una zona
nexdns zone delete example.com
Gestión de registros
Gestiona registros DNS dentro de una zona. Todos los comandos de registros están bajo el subcomando nexdns record.
Listar registros
nexdns record list example.com
Añadir registros
# A record
nexdns record add example.com A www 1.2.3.4 --ttl 300
# MX record with priority
nexdns record add example.com MX @ mail.example.com --priority 10
Actualizar un registro
nexdns record update example.com <record-id> --content 5.6.7.8
Crear el registro si no existe
Crea el registro solo si aún no existe (una coincidencia exacta de tipo, nombre y contenido). Los registros existentes con contenido distinto no se modifican – seguro para configuraciones round-robin. Idempotente:
nexdns record ensure example.com A www 1.2.3.4
Eliminar un registro
nexdns record delete example.com <record-id>
DNSSEC
Gestiona la firma DNSSEC de tus zonas.
Verificar estado de DNSSEC
nexdns dnssec status example.com
Habilitar DNSSEC
nexdns dnssec enable example.com
Obtener registros DS
Recuperar registros DS para configurar en tu registrador de dominios:
nexdns dnssec ds-records example.com
Deshabilitar DNSSEC
nexdns dnssec disable example.com
DNS como código
Define tu infraestructura DNS de forma declarativa en un archivo nexdns.yaml y gestiónala con control de versiones. El CLI compara tu configuración local con el estado en producción y aplica solo los cambios necesarios.
Formato de configuración
zones:
example.com:
dnssec: true
records:
- type: A
name: "@"
content: "1.2.3.4"
ttl: 300
- type: CNAME
name: www
content: example.com
Vista previa de cambios
Mostrar un diff de lo que cambiaría sin aplicar nada:
nexdns apply
Aplicar cambios
Aplicar los cambios después de revisar el diff:
nexdns apply --confirm
Solo diff
nexdns diff
Obtener estado actual
Genera un archivo nexdns.yaml a partir de la configuración DNS actual en producción:
nexdns pull example.com
Sustitución de variables de entorno
Usa la sintaxis ${VARIABLE} en tu archivo de configuración. El CLI sustituye las variables de entorno en el momento de la aplicación, facilitando la reutilización de configuraciones entre entornos:
zones:
${DOMAIN}:
records:
- type: A
name: "@"
content: "${SERVER_IP}"
Docker
El CLI está disponible como imagen Docker. Pasa tu token API a través de la variable de entorno NEXDNS_TOKEN.
Ejecutar comandos
docker run --rm -e NEXDNS_TOKEN=nxd_xxx nexdns/cli zone list
Importar un archivo de zona
Monta un directorio local para pasar archivos de zona al contenedor:
docker run --rm -e NEXDNS_TOKEN=nxd_xxx \
-v ./zones:/zones \
nexdns/cli zone import example.com /zones/example.com.zone
Opciones globales
Las siguientes opciones están disponibles en todos los comandos:
| Opción | Descripción |
|---|---|
--token |
Token API (tiene prioridad sobre el archivo de configuración y la variable de entorno) |
--api-url |
Anular la URL base de la API (predeterminado: https://api.nexdns.tech/v1) |
--output, -o |
Formato de salida: table (predeterminado), json, yaml, csv |
--color |
Forzar salida con color (auto, always, never) |
--quiet, -q |
Suprimir la salida no esencial |
--verbose, -v |
Habilitar registro detallado (útil para depuración) |
--dry-run |
Vista previa de cambios sin aplicarlos |
--timeout |
Tiempo de espera de solicitud en segundos (predeterminado: 30) |
Terraform
El proveedor Terraform de NexDNS te permite gestionar zonas y registros como recursos de Terraform. Instala el proveedor desde el Terraform Registry y configúralo con tu token API.
provider "nexdns" {
api_token = var.nexdns_token
}
resource "nexdns_zone" "main" {
name = "example.com"
ns_group = "eu"
}
resource "nexdns_record" "www" {
zone_id = nexdns_zone.main.id
type = "A"
name = "www"
content = "1.2.3.4"
}
Integración con DNSControl
DNSControl es una herramienta DNS-as-code de Stack Overflow. Usa el proveedor de NexDNS para gestionar tus zonas de forma declarativa.
creds.json
{
"nexdns": {
"TYPE": "NEXDNS",
"api_token": "nxd_xxxxxxxxxxxxxxxxxxxx"
}
}
dnsconfig.js
var REG_NONE = NewRegistrar("none");
var DSP_NEXDNS = NewDnsProvider("nexdns");
D("example.com", REG_NONE, DnsProvider(DSP_NEXDNS),
A("@", "1.2.3.4"),
A("www", "1.2.3.4"),
MX("@", 10, "mail.example.com."),
CNAME("blog", "example.com.")
);
OctoDNS
OctoDNS es una herramienta DNS-as-code de GitHub. Instala el proveedor de NexDNS y configúralo como origen o destino en tu configuración de OctoDNS.
Instalar proveedor
pip install octodns-nexdns
Archivo config/production.yaml
providers:
nexdns:
class: octodns_nexdns.NexdnsProvider
api_token: env/NEXDNS_TOKEN
zones:
example.com.:
sources:
- config
targets:
- nexdns
Archivo zones/example.com.yaml
"":
type: A
value: 1.2.3.4
www:
type: A
value: 1.2.3.4
blog:
type: CNAME
value: example.com.