Saltar al contenido principal

CLI y herramientas para desarrolladores

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:

  1. Opción --token (prioridad más alta)
  2. Variable de entorno NEXDNS_TOKEN
  3. 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.

Utilizamos cookies para garantizar el correcto funcionamiento de este sitio web y mejorar su experiencia. Algunas cookies son estrictamente necesarias para el funcionamiento del sitio, mientras que otras son opcionales.

Puede aceptar todas las cookies o limitar su elección a las estrictamente necesarias. Para más información, consulte nuestra Política de privacidad y nuestra Política de cookies.