Installation du CLI
Le CLI NexDNS est un binaire unique sans dépendances externes. Choisissez la méthode d’installation adaptée à votre environnement.
Installation rapide (Linux / macOS)
curl -sL https://get.nexdns.tech/cli | sh
Homebrew
brew install nexdns/tap/nexdns-cli
Docker
docker pull nexdns/cli
Vérifier l’installation
Après l’installation, confirmez que le CLI est disponible et vérifiez sa version :
nexdns version
Authentification
Le CLI nécessite un token API pour communiquer avec l’API NexDNS. Vous pouvez créer un token sur nexdns.tech/settings/api-keys.
Enregistrer le token dans la configuration
nexdns auth token nxd_xxxxxxxxxxxxxxxxxxxx
Variable d’environnement (CI/CD)
export NEXDNS_TOKEN=nxd_xxxxxxxxxxxxxxxxxxxx
Vérifier le statut d’authentification
nexdns auth status
Fichier de configuration
Le token est stocké dans ~/.nexdns/config.yaml. Le CLI résout les identifiants dans l’ordre de priorité suivant :
--token(priorité la plus élevée)- Variable d’environnement
NEXDNS_TOKEN - Fichier de configuration
~/.nexdns/config.yaml
Gestion des zones
Gérez les zones DNS en ligne de commande. Toutes les commandes de zone sont sous la sous-commande nexdns zone.
Lister les zones
nexdns zone list
Ajouter une zone
nexdns zone add example.com --ns-group eu
Informations sur la zone
nexdns zone info example.com
Exporter une zone (format BIND)
nexdns zone export example.com
Importer un fichier de zone
Utilisez --dry-run pour prévisualiser les modifications avant de les appliquer :
nexdns zone import example.com zone.txt --dry-run
Garantir l’existence d’une zone
Crée la zone uniquement si elle n’existe pas déjà (idempotent) :
nexdns zone ensure example.com
Vérifier la santé de la zone
nexdns zone check example.com
Supprimer une zone
nexdns zone delete example.com
Gestion des enregistrements
Gérez les enregistrements DNS au sein d’une zone. Toutes les commandes d’enregistrement sont sous la sous-commande nexdns record.
Lister les enregistrements
nexdns record list example.com
Ajouter des enregistrements
# 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
Mettre à jour un enregistrement
nexdns record update example.com <record-id> --content 5.6.7.8
Créer l’enregistrement s’il est absent
Crée l’enregistrement uniquement s’il n’existe pas déjà (correspondance exacte du type, du nom et du contenu). Les enregistrements existants au contenu différent ne sont pas modifiés – sûr pour les configurations round-robin. Idempotent :
nexdns record ensure example.com A www 1.2.3.4
Supprimer un enregistrement
nexdns record delete example.com <record-id>
DNSSEC
Gérez la signature DNSSEC de vos zones.
Vérifier le statut DNSSEC
nexdns dnssec status example.com
Activer DNSSEC
nexdns dnssec enable example.com
Obtenir les enregistrements DS
Récupérez les enregistrements DS à configurer auprès de votre bureau d’enregistrement de domaine :
nexdns dnssec ds-records example.com
Désactiver DNSSEC
nexdns dnssec disable example.com
DNS en tant que code
Définissez votre infrastructure DNS de manière déclarative dans un fichier nexdns.yaml et gérez-la avec le contrôle de version. Le CLI compare votre configuration locale à l’état actuel et n’applique que les modifications nécessaires.
Format de configuration
zones:
example.com:
dnssec: true
records:
- type: A
name: "@"
content: "1.2.3.4"
ttl: 300
- type: CNAME
name: www
content: example.com
Prévisualiser les modifications
Afficher un diff de ce qui changerait sans rien appliquer :
nexdns apply
Appliquer les modifications
Appliquer les modifications après avoir examiné le diff :
nexdns apply --confirm
Diff uniquement
nexdns diff
Récupérer l’état actuel
Générer un nexdns.yaml à partir de la configuration DNS actuelle :
nexdns pull example.com
Substitution de variables d’environnement
Utilisez la syntaxe ${VARIABLE} dans votre fichier de configuration. Le CLI substitue les variables d’environnement au moment de l’application, ce qui facilite la réutilisation des configurations entre les environnements :
zones:
${DOMAIN}:
records:
- type: A
name: "@"
content: "${SERVER_IP}"
Docker
Le CLI est disponible en tant qu’image Docker. Transmettez votre token API via la variable d’environnement NEXDNS_TOKEN.
Exécuter des commandes
docker run --rm -e NEXDNS_TOKEN=nxd_xxx nexdns/cli zone list
Importer un fichier de zone
Montez un répertoire local pour transmettre des fichiers de zone au conteneur :
docker run --rm -e NEXDNS_TOKEN=nxd_xxx \
-v ./zones:/zones \
nexdns/cli zone import example.com /zones/example.com.zone
Options globales
Les options suivantes sont disponibles pour toutes les commandes :
| Option | Description de l’option |
|---|---|
--token |
Token API (remplace le fichier de configuration et la variable d’environnement) |
--api-url |
Remplacer l’URL de base de l’API (par défaut : https://api.nexdns.tech/v1) |
--output, -o |
Format de sortie : table (par défaut), json, yaml, csv |
--color |
Forcer la sortie colorée (auto, always, never) |
--quiet, -q |
Supprimer la sortie non essentielle |
--verbose, -v |
Activer la journalisation détaillée (utile pour le débogage) |
--dry-run |
Prévisualiser les modifications sans les appliquer |
--timeout |
Délai d’expiration des requêtes en secondes (par défaut : 30) |
Terraform
Le provider Terraform NexDNS vous permet de gérer les zones et les enregistrements en tant que ressources Terraform. Installez le provider depuis le Terraform Registry et configurez-le avec votre 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"
}
Intégration DNSControl
DNSControl est un outil DNS-as-code de Stack Overflow. Utilisez le provider NexDNS pour gérer vos zones de manière déclarative.
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 est un outil DNS-as-code de GitHub. Installez le provider NexDNS et configurez-le comme source ou cible dans votre configuration OctoDNS.
Installer le provider
pip install octodns-nexdns
Fichier config/production.yaml
providers:
nexdns:
class: octodns_nexdns.NexdnsProvider
api_token: env/NEXDNS_TOKEN
zones:
example.com.:
sources:
- config
targets:
- nexdns
Fichier 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.