Geliştiriciler → Kod olarak DNS
Bölgenizi kodunuzun yanında tek bir YAML veya JSON dosyasında tutun. DNS değişikliklerini pull request'lerde inceleyin, neyin değişeceğini değişmeden önce tam olarak görün ve tek adımda uygulayın.
$ 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, bölgenin kendisi için @ ya da bölgeye göre göreli bir addır (www, _dmarc); sonunda nokta bulunan tam nitelikli bir ad da kullanılabilir.ttl 5m, 15m, 30m, 1h veya 1d olabilir; belirtilmezse kayıt dosyanın ttl değerini ya da 1h değerini alır. MX priority (varsayılan 10), SRV priority, weight ve port, REDIRECT ise save_path (varsayılan true) alır.Dosya, bölgenin tamamıdır: bölgede olup dosyada olmayan bir kayıt silinir. Yalnızca ekleme ve değiştirme yapmak için --keep-unlisted (API'de prune=false) kullanın.
A, AAAA, MX ve TXT kayıtları, tek bir ad birden fazla kayıt taşıyabildiği için ad ve değere (MX için ayrıca önceliğe) göre eşleştirilir. CNAME, SRV, PTR ve REDIRECT kayıtları ada göre eşleştirilir. Farklı bir ttl ya da SRV önceliği, ağırlığı veya portu bir değişiklik sayılır; diğer her şey bir ekleme veya silme işlemidir.
Uygulama tek bir işlemde çalışır: önce silmeler, ardından değişiklikler, sonra yeni kayıtlar; böylece aynı dosyada bir CNAME bir A kaydının yerini alabilir. Bir kayıt reddedilirse hiçbir şey değiştirilmez. Plan ile uygulama arasında biri bölgeyi değiştirirse uygulama reddedilir ve yeniden plan yaparsınız.
NameOcean'ın kendisi için tuttuğu kayıtlar, yani HTTP yönlendirmesinin arkasındaki adres ve SSL için ACME doğrulamaları, hiçbir zaman dışa aktarılmaz, plana alınmaz veya silinmez.
dns:write yetkisiyle (yalnızca plan yapan bir iş için sadece dns:read) bir API anahtarı oluşturun ve NAMEOCEAN_API_KEY secret'ı olarak kaydedin.
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
Yalnızca sapmayı raporlaması gereken işler için dns plan --detailed-exitcode, değişiklik olduğunda 2 koduyla çıkar.
| GET /dns/{zone}/export?output=yaml | Dosya olarak bölge (output=yaml olmadan JSON); X-Zone-Serial başlığı seri numarasını verir |
| POST /dns/{zone}/plan | Uygulamanın yapacakları; hiçbir şeyi değiştirmez ve yalnızca dns:read gerektirir |
| POST /dns/{zone}/apply?serial=N | Bölgeyi dosyayla eşleştirin; bölge artık planın seri numarasında değilse 409 zone_changed döner |
$ 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
YAML'ı Content-Type: application/yaml ile ya da aynı belgeyi JSON olarak gönderin. Sunucunun kabul edemediği bir dosya, her kaydı ve alanı belirten bir errors listesiyle birlikte 400 invalid_zone_file yanıtı döndürür. Tüm ayrıntılar API referansında yer alır.
MCP üzerinden bir asistan bir zone'u dışa aktarabilir, plan_dns_zone ile birçok kayıtta aynı anda yapılacak bir değişikliği planlayabilir ve planı size gösterdikten sonra apply_dns_zone ile uygulayabilir.