sng dns
Fonctionnalité en cours de déploiement. L'interface décrite ici est celle de la prochaine livraison : elle peut encore évoluer, et n'est pas forcément activée sur votre tenant.
Activé progressivement sur les tenants.
Le groupe sng dns gère les domaines que vous apportez (sng dns zone, kind
DNSZone) et les enregistrements de vos
zones (sng dns record, kind DNSRecord).
Chaque commande écrit ou lit le manifeste correspondant dans l'état désiré, puis la plateforme
l'applique : comptez quelques minutes avant qu'un changement soit visible. L'achat de domaines
relève de sng domain (non disponible).
Toutes les commandes exigent une session sur le tenant. Sinon :
tenant session required: run sng tenant use NAME. Les flags
globaux (--config, --json, -v, --version) sont décrits dans l'index de la CLI.
Actions IAM par commande :
| Commande | Action IAM | Ressource | Route |
|---|---|---|---|
zone list | dns:list | dnszone/* | GET /v1/dns/zones |
zone create | dns:write | dnszone/* et dnszone/<domaine> | POST /v1/dns/zones |
zone describe | dns:read | dnszone/<domaine> | GET /v1/dns/zones/{domain} |
zone delete | dns:delete | dnszone/<domaine> | DELETE /v1/dns/zones/{domain} |
record list | dns:list | dnsrecord/* | GET /v1/dns/records |
record set | dns:write | dnsrecord/<id> | PUT /v1/dns/records |
record describe | dns:read | dnsrecord/<id> | GET /v1/dns/records/{id} |
record delete | dns:delete | dnsrecord/<id> | DELETE /v1/dns/records/{id} |
Les policies gérées readonly couvrent list, describe ; readwrite et admin couvrent
tout. Un refus affiche forbidden (no policy of this tenant allows it: see sng tenant policy list).
sng apply d'un DNSZone ou d'un DNSRecord exige aussi dns:write en plus de deploy:write.
Si l'API n'a pas le DNS activé : DNS non configuré sur cette API.
sng dns zone list
sng dns zone list
Liste les domaines apportés du tenant courant. La zone par défaut
<tenant>.dev.stackngo.app n'y figure pas.
| Flag | Type | Défaut | Description |
|---|---|---|---|
| (aucun flag propre) |
sng dns zone list
DOMAIN PHASE READY REASON
exemple.fr Active yes Delegated
exemple.io - (sync…) no
(sync…) : la plateforme n'a pas encore vu la zone. Sans zone : aucune zone.
Sortie --json : {"zones": [ … ]}, chaque zone ayant la
forme décrite sous zone describe.
sng dns zone create
sng dns zone create DOMAIN [--source SOURCE]
Alias : add. Déclare un domaine apporté. L'objet DNSZone porte le nom du domaine (exemple.fr).
| Argument | Description |
|---|---|
DOMAIN | domaine enregistrable (exemple.fr), converti en minuscules, point final retiré |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--source | string | (API : Bring) | origine du domaine ; seule Bring est acceptée |
sng dns zone create exemple.fr
zone exemple.fr déclarée
étape suivante : posez cet enregistrement chez l'hébergeur DNS actuel du domaine :
_stackngo-verify.exemple.fr TXT "sng-verify-4b1f0e9c2a7d4e6b8c3f1a2d5e7b9c0f"
puis suivez la vérification : sng dns zone describe <domaine>
Le TXT est calculé juste après la création : create l'attend jusqu'à 20 secondes avant de
l'afficher. S'il n'est toujours pas prêt, la commande se termine par
TXT de vérification pas encore calculé : sng dns zone describe exemple.fr ; describe
l'affichera quelques instants plus tard. --json renvoie la zone avec son champ
verification dès qu'il est connu.
Erreurs (code HTTP de l'API) :
| Message | Cause |
|---|---|
domaine "www.exemple.fr" : sous-domaine de exemple.fr, déclarer exemple.fr (400) | sous-domaine |
domaine "exemple.zz" : TLD inconnu (400) | suffixe absent de la liste publique |
domaine "x.stackngo.app" : domaine de la plateforme (stackngo.app) (400) | domaine de la plateforme (stackngo.app, stackngo.fr et leurs sous-domaines), jamais apportable |
l'achat de domaine (source: Purchase) n'est pas encore disponible (400) | --source Purchase |
le DNSZone "exemple.fr" existe déjà (409) | déjà déclaré dans le tenant |
domaine "exemple.fr" déjà déclaré (exemple) (409) | déclaré sous un autre nom |
invalid zone domain (400) | caractères hors a-z, 0-9, -, . |
sng dns zone describe
sng dns zone describe DOMAIN
Alias : show. État d'une zone, et l'étape suivante : le TXT à poser en phase Pending,
les serveurs de noms en phase Provisioned ou Active.
| Argument | Description |
|---|---|
DOMAIN | domaine de la zone |
sng dns zone describe exemple.fr
domain: exemple.fr
source: Bring
phase: Provisioned
ready: no
reason: AwaitingDelegation
message: déclarer chez le registrar les serveurs de noms : dns200.anycast.me, ns200.anycast.me
serveurs de noms à déclarer chez le registrar du domaine :
dns200.anycast.me
ns200.anycast.me
synced: no (pas encore réconcilié) apparaît tant que la plateforme n'a pas vu la zone.
Sortie --json :
{
"id": "exemple.fr",
"domain": "exemple.fr",
"source": "Bring",
"phase": "Provisioned",
"verification": { "name": "_stackngo-verify.exemple.fr", "value": "sng-verify-4b1f0e9c2a7d4e6b8c3f1a2d5e7b9c0f" },
"name_servers": ["dns200.anycast.me", "ns200.anycast.me"],
"ready": false,
"synced": true,
"reason": "AwaitingDelegation",
"message": "déclarer chez le registrar les serveurs de noms : dns200.anycast.me, ns200.anycast.me"
}
Erreurs : zone "exemple.fr" (404) si le domaine n'est pas déclaré dans le tenant.
sng dns zone delete
sng dns zone delete DOMAIN [--yes]
Alias : rm. Retire un domaine apporté. Demande confirmation (oui, yes, o ou y).
| Argument | Description |
|---|---|
DOMAIN | domaine de la zone |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--yes, -y | bool | false | confirmer sans invite interactive |
sng dns zone delete exemple.fr --yes
zone exemple.fr supprimée
Sortie --json : {"domain": "exemple.fr", "deleted": true}.
Erreurs :
| Message | Cause |
|---|---|
2 enregistrement(s) utilisent encore la zone "exemple.fr", les supprimer d'abord (409) | des DNSRecord du tenant visent la zone |
confirmation requise : relancez avec --yes ou depuis un terminal interactif | pas de terminal et pas de --yes |
opération annulée | réponse autre que oui |
zone "exemple.fr" (404) | domaine non déclaré dans le tenant |
sng dns record list
sng dns record list [--zone DOMAIN]
Liste les enregistrements du tenant courant, triés par zone, nom et type.
| Flag | Type | Défaut | Description |
|---|---|---|---|
--zone | string | ne garder qu'une zone (domaine apporté, ou votre zone par défaut) |
sng dns record list
ID FQDN TYPE TARGETS TTL READY REASON
api-preview-cname-5e1d0c3a api.preview.acme.dev.stackngo.app CNAME my-api.netlify.app 300 yes Published
www-a-7c2e91d4 www.acme.dev.stackngo.app A 203.0.113.10,203.0.113.11 300 yes Published
apex-mx-91b0e2fa exemple.fr MX 10 mx1.mail.ovh.net,20 mx2.mail.ovh.net 3600 no (sync…)
Un enregistrement dont la zone apportée n'est pas encore déclarée s'affiche zone non déclarée (raison ZoneNotOwned) : il est conservé et publié tout seul quand la zone est prouvée.
Sans enregistrement : aucun enregistrement. Sortie --json :
{"records": [ … ]}.
sng dns record set
sng dns record set NAME --type TYPE --target VALUE [--target VALUE ...] [--ttl N] [--zone DOMAIN]
Crée ou remplace un enregistrement. Un même couple zone + nom + type est mis à jour en place : cibles et TTL sont remplacés. Une requête identique ne change rien.
| Argument | Description |
|---|---|
NAME | nom relatif à la zone : @ (apex), www, a.b, *.preview, _dmarc |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--type | string | (requis) | A, AAAA, CNAME, TXT ou MX (casse indifférente) |
--target | string, répétable | (requis) | cible : IP, nom d'hôte, texte, ou "<priorité> <hôte>" pour un MX |
--ttl | int | 300 | TTL en secondes, de 60 à 86 400 |
--zone | string | (zone par défaut) | domaine apporté ; peut être déclaré après coup (l'enregistrement reste ZoneNotOwned puis est publié tout seul) (votre zone par défaut, donnée explicitement, équivaut à l'absence du flag) |
sng dns record set www --type A --target 203.0.113.10 --target 203.0.113.11
sng dns record set @ --type MX --target "10 mx.exemple.fr" --zone exemple.fr --ttl 3600
sng dns record set _dmarc --zone exemple.fr --type TXT --target "v=DMARC1; p=none"
enregistrement www.acme.dev.stackngo.app A créé : 203.0.113.10, 203.0.113.11 (id www-a-7c2e91d4)
effectif après … (quelques minutes) : sng dns record describe www-a-7c2e91d4
créé devient mis à jour sur un enregistrement existant. L'id est dérivé de la zone, du
nom et du type (@ → apex, * → wildcard, . → -, _ retiré, plus une empreinte).
Sortie --json : l'enregistrement, forme décrite sous record describe.
Erreurs :
| Message | Cause |
|---|---|
--type "SRV" : A, AAAA, CNAME, TXT, MX | type non pris en charge (contrôle local) |
--ttl 30 : de 60 à 86400 secondes | TTL hors bornes (contrôle local) |
au moins une cible : --target | cibles vides |
targets[0] : 10.0.0.12 n'est pas une adresse publique (400) | adresse privée ou réservée |
un CNAME a une seule cible et n'est jamais à l'apex (400) | CNAME multiple ou sur @ |
nom "a..b" : relatif à la zone (@, www, a.b, *.preview, _dmarc), minuscules (400) | nom invalide |
_acme-challenge.www.acme.dev.stackngo.app : label "_acme-challenge" réservé à la plateforme (400) | nom réservé |
enregistrement www A déjà déclaré (www, exemple) (409) | même nom et type déclaré dans un autre objet |
enregistrement "…" modifié entre-temps, réessayez (409) | modification concurrente |
sng dns record describe
sng dns record describe ID
Alias : show. État d'un enregistrement. ID est rendu par list et set ; pour un
enregistrement appliqué par sng apply, c'est le nom du manifeste.
| Argument | Description |
|---|---|
ID | identifiant de l'enregistrement |
sng dns record describe www-a-7c2e91d4
id: www-a-7c2e91d4
fqdn: www.acme.dev.stackngo.app
zone: acme.dev.stackngo.app (zone par défaut)
name: www
type: A
ttl: 300
targets: 203.0.113.10, 203.0.113.11
ready: yes
reason: Published
Sortie --json :
{
"id": "www-a-7c2e91d4",
"zone": "acme.dev.stackngo.app",
"default_zone": true,
"name": "www",
"type": "A",
"ttl": 300,
"targets": ["203.0.113.10", "203.0.113.11"],
"fqdn": "www.acme.dev.stackngo.app",
"ready": true,
"synced": true,
"reason": "Published"
}
Raisons possibles : voir DNSRecord — Statut et conditions.
Erreurs : enregistrement "x" (404) ; id d'enregistrement invalide "a/b" : voir sng dns record list.
sng dns record delete
sng dns record delete ID [--yes]
Alias : rm. Supprime un enregistrement ; il est retiré du DNS en quelques minutes.
| Argument | Description |
|---|---|
ID | identifiant de l'enregistrement |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--yes, -y | bool | false | confirmer sans invite interactive |
sng dns record delete www-a-7c2e91d4 --yes
enregistrement www-a-7c2e91d4 supprimé
Sortie --json : {"id": "www-a-7c2e91d4", "deleted": true}. Erreurs : comme
zone delete pour la confirmation ; enregistrement "x" (404).
Voir aussi
- Guides : Votre zone par défaut, Apporter un domaine, Enregistrements, Domaines sur une App.
- Kinds : DNSZone, DNSRecord.
- Commandes génériques :
sng kind get DNSZone exemple.fr,sng kind delete DNSRecord mail(Ressources).