Installazione
La CLI NexDNS è un singolo binario senza dipendenze esterne. Scelga il metodo di installazione più adatto al Suo ambiente.
Installazione rapida (Linux / macOS)
curl -sL https://get.nexdns.tech/cli | sh
Homebrew
brew install nexdns/tap/nexdns-cli
Docker
docker pull nexdns/cli
Verifica dell’installazione
Dopo l’installazione, verifichi che la CLI sia disponibile e controlli la versione:
nexdns version
Autenticazione
La CLI richiede un token API per comunicare con l’API NexDNS. È possibile creare un token su nexdns.tech/settings/api-keys.
Salvataggio del token nella configurazione
nexdns auth token nxd_xxxxxxxxxxxxxxxxxxxx
Variabile d’ambiente (CI/CD)
export NEXDNS_TOKEN=nxd_xxxxxxxxxxxxxxxxxxxx
Verifica dello stato di autenticazione
nexdns auth status
File di configurazione
Il token viene memorizzato in ~/.nexdns/config.yaml. La CLI risolve le credenziali nel seguente ordine di priorità:
--tokenflag (priorità più alta)- Variabile d’ambiente
NEXDNS_TOKEN - File di configurazione
~/.nexdns/config.yaml
Gestione delle zone
Gestione delle zone DNS dalla riga di comando. Tutti i comandi per le zone sono sotto il sottocomando nexdns zone.
Elencare le zone
nexdns zone list
Aggiungere una zona
nexdns zone add example.com --ns-group eu
Informazioni sulla zona
nexdns zone info example.com
Esportare una zona (formato BIND)
nexdns zone export example.com
Importare un file di zona
Utilizzare --dry-run per visualizzare le modifiche prima di applicarle:
nexdns zone import example.com zone.txt --dry-run
Garantire l’esistenza della zona
Crea la zona solo se non esiste già (idempotente):
nexdns zone ensure example.com
Controllare l’integrità della zona
nexdns zone check example.com
Eliminare una zona
nexdns zone delete example.com
Gestione dei record
Gestione dei record DNS all’interno di una zona. Tutti i comandi per i record sono sotto il sottocomando nexdns record.
Elencare i record
nexdns record list example.com
Aggiungere record
# 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
Aggiornare un record
nexdns record update example.com <record-id> --content 5.6.7.8
Creare il record se mancante
Crea il record solo se non esiste già (corrispondenza esatta di tipo, nome e contenuto). I record esistenti con contenuto diverso non vengono modificati – sicuro per le configurazioni round-robin. Idempotente:
nexdns record ensure example.com A www 1.2.3.4
Eliminare un record
nexdns record delete example.com <record-id>
DNSSEC
Gestione della firma DNSSEC per le zone.
Controllare lo stato DNSSEC
nexdns dnssec status example.com
Abilitare DNSSEC
nexdns dnssec enable example.com
Ottenere i record DS
Recuperare i record DS per configurarli presso il registrar del dominio:
nexdns dnssec ds-records example.com
Disabilitare DNSSEC
nexdns dnssec disable example.com
DNS come codice
Definisca la Sua infrastruttura DNS in modo dichiarativo in un file nexdns.yaml e la gestisca con il controllo di versione. La CLI confronta la configurazione locale con lo stato live e applica solo le modifiche necessarie.
Formato della configurazione
zones:
example.com:
dnssec: true
records:
- type: A
name: "@"
content: "1.2.3.4"
ttl: 300
- type: CNAME
name: www
content: example.com
Anteprima delle modifiche
Mostra un diff di ciò che cambierebbe senza applicare nulla:
nexdns apply
Applicare le modifiche
Applica le modifiche dopo aver esaminato il diff:
nexdns apply --confirm
Solo diff
nexdns diff
Estrarre lo stato live
Genera un nexdns.yaml dalla configurazione DNS live corrente:
nexdns pull example.com
Sostituzione delle variabili d’ambiente
Utilizzi la sintassi ${VARIABLE} nel file di configurazione. La CLI sostituisce le variabili d’ambiente al momento dell’applicazione, rendendo facile riutilizzare le configurazioni tra ambienti diversi:
zones:
${DOMAIN}:
records:
- type: A
name: "@"
content: "${SERVER_IP}"
Docker
La CLI è disponibile come immagine Docker. Inserire il token API tramite la variabile d’ambiente NEXDNS_TOKEN.
Eseguire comandi
docker run --rm -e NEXDNS_TOKEN=nxd_xxx nexdns/cli zone list
Importare un file di zona
Montare una directory locale per passare i file di zona al container:
docker run --rm -e NEXDNS_TOKEN=nxd_xxx \
-v ./zones:/zones \
nexdns/cli zone import example.com /zones/example.com.zone
Flag globali
I seguenti flag sono disponibili su tutti i comandi:
| Opzione | Descrizione |
|---|---|
--token |
Token API (sovrascrive il file di configurazione e la variabile d’ambiente) |
--api-url |
Sovrascrive l’URL di base dell’API (predefinito: https://api.nexdns.tech/v1) |
--output, -o |
Formato di output: table (predefinito), json, yaml, csv |
--color |
Forza l’output colorato (auto, always, never) |
--quiet, -q |
Sopprime l’output non essenziale |
--verbose, -v |
Abilita il logging dettagliato (utile per il debug) |
--dry-run |
Visualizza le modifiche senza applicarle |
--timeout |
Timeout della richiesta in secondi (predefinito: 30) |
Terraform
Il provider Terraform NexDNS consente di gestire zone e record come risorse Terraform. Installare il provider dal Terraform Registry e configurarlo con il 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"
}
DNSControl
DNSControl è uno strumento DNS-as-code di Stack Overflow. Utilizzare il provider NexDNS per gestire le zone in modo dichiarativo.
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 è uno strumento DNS-as-code di GitHub. Installare il provider NexDNS e configurarlo come sorgente o destinazione nella configurazione OctoDNS.
Installare il provider
pip install octodns-nexdns
File config/production.yaml
providers:
nexdns:
class: octodns_nexdns.NexdnsProvider
api_token: env/NEXDNS_TOKEN
zones:
example.com.:
sources:
- config
targets:
- nexdns
File 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.