Utvecklare → DNS som kod
Ha din zon i en enda YAML- eller JSON-fil bredvid din kod. Granska DNS-ändringar i pull requests, se exakt vad som kommer att ändras innan det sker och tillämpa det i ett enda steg.
$ nameocean dns export example.com > dns.yaml $ $EDITOR dns.yaml $ nameocean dns plan -f dns.yaml + CNAME blog example.netlify.app ~ A @ 203.0.113.10 ttl 1h → 5m - A old 203.0.113.9 example.com: 1 to add, 1 to change, 1 to delete, 6 unchanged. $ nameocean dns apply -f dns.yaml Apply these changes? [y/N] y Applied: 1 added, 1 changed, 1 deleted. example.com is at serial 214.
# yaml-language-server: $schema=https://nameocean.net/schemas/dns-zone.json
zone: example.com
records:
- name: "@"
type: A
value: 203.0.113.10
ttl: 5m
- name: www
type: CNAME
value: "@"
- name: "@"
type: MX
value: mail.example.com
priority: 10
- name: "@"
type: TXT
value: "v=spf1 mx -all"
- name: _sip._tcp
type: SRV
value: sip.example.com
priority: 10
weight: 5
port: 5060
- name: old
type: REDIRECT
value: https://example.com/new
name är @ för själva zonen eller ett namn relativt till den (www, _dmarc); ett fullständigt kvalificerat namn med avslutande punkt fungerar också.ttl är 5m, 15m, 30m, 1h eller 1d; utan den får en post filens ttl, eller 1h. MX tar priority (standard 10), SRV priority, weight och port, REDIRECT save_path (standard true).Filen är hela zonen: en post som finns i zonen men inte i filen tas bort. Ange --keep-unlisted (prune=false i API:et) för att endast lägga till och ändra.
A-, AAAA-, MX- och TXT-poster matchas efter namn och värde (och prioritet för MX), eftersom ett namn kan ha flera sådana poster. CNAME-, SRV-, PTR- och REDIRECT-poster matchas efter namn. Ett annat ttl-värde, eller en annan SRV-prioritet, vikt eller port, räknas som en ändring; allt annat är ett tillägg eller en borttagning.
Apply körs i en enda transaktion: först borttagningar, sedan ändringar, sedan nya poster, så att en CNAME kan ersätta en A-post i samma fil. Om en post avvisas ändras ingenting. Om någon ändrar zonen mellan plan och apply avvisas apply och du får göra en ny plan.
Poster som NameOcean behåller för egen del, adressen bakom en HTTP-omdirigering och ACME-utmaningarna för SSL, exporteras, planeras eller tas aldrig bort.
Skapa en API-nyckel med dns:write (eller endast dns:read för ett jobb som bara planerar) och spara den som hemligheten NAMEOCEAN_API_KEY.
name: dns
on:
pull_request: {paths: [dns.yaml]}
push: {branches: [main], paths: [dns.yaml]}
jobs:
dns:
runs-on: ubuntu-latest
env:
NAMEOCEAN_API_KEY: ${{ secrets.NAMEOCEAN_API_KEY }}
steps:
- uses: actions/checkout@v4
- run: curl -fsSL https://nameocean.net/install.sh | sh
- run: nameocean dns plan -f dns.yaml
- if: github.event_name == 'push'
run: nameocean dns apply -f dns.yaml --yes
dns plan --detailed-exitcode avslutas med 2 när det finns ändringar, för jobb som bara ska rapportera avvikelser.
| GET /dns/{zone}/export?output=yaml | Zonen som fil (JSON utan output=yaml); X-Zone-Serial-headern är dess serienummer |
| POST /dns/{zone}/plan | Vad apply skulle göra; ändrar ingenting och kräver endast dns:read |
| POST /dns/{zone}/apply?serial=N | Gör zonen identisk med filen; 409 zone_changed om den inte längre har planens serienummer |
$ curl -X POST https://nameocean.net/api/v1/dns/example.com/plan \ -H "Authorization: Bearer $NAMEOCEAN_API_KEY" \ -H "Content-Type: application/yaml" --data-binary @dns.yaml
Skicka YAML med Content-Type: application/yaml eller samma dokument som JSON. En fil som servern inte kan acceptera besvaras med 400 invalid_zone_file och en errors-lista som anger varje post och fält. Allt finns i API-referensen.
Via MCP kan en assistent exportera en zon, planera en ändring av många poster på en gång med plan_dns_zone och, efter att ha visat dig planen, tillämpa den med apply_dns_zone.