Kurulum
NexDNS CLI, harici bağımlılığı olmayan tek bir çalıştırılabilir dosyadır. Ortamınıza uygun kurulum yöntemini seçin.
Hızlı Kurulum (Linux / macOS)
curl -sL https://get.nexdns.tech/cli | sh
Homebrew
brew install nexdns/tap/nexdns-cli
Docker
docker pull nexdns/cli
Kurulumu Doğrulama
Kurulumdan sonra CLI'nin kullanılabilir olduğunu doğrulayın ve sürümünü kontrol edin:
nexdns version
Kimlik Doğrulama
CLI, NexDNS API ile iletişim kurmak için bir API jetonu gerektirir. nexdns.tech/settings/api-keys adresinden bir jeton oluşturabilirsiniz.
Jetonu Yapılandırmaya Kaydetme
nexdns auth token nxd_xxxxxxxxxxxxxxxxxxxx
Ortam Değişkeni (CI/CD)
export NEXDNS_TOKEN=nxd_xxxxxxxxxxxxxxxxxxxx
Kimlik Doğrulama Durumunu Kontrol Etme
nexdns auth status
Yapılandırma Dosyası
Jeton ~/.nexdns/config.yaml dosyasında saklanır. CLI, kimlik bilgilerini aşağıdaki öncelik sırasına göre çözümler:
--tokenbayrağı (en yüksek öncelik)NEXDNS_TOKENortam değişkeni- Yapılandırma dosyası
~/.nexdns/config.yaml
Bölge yönetimi
DNS bölgelerini komut satırından yönetin. Tüm bölge komutları nexdns zone alt komutu altındadır.
Bölgeleri Listeleme
nexdns zone list
Bölge Ekleme
nexdns zone add example.com --ns-group eu
Bölge Bilgisi
nexdns zone info example.com
Bölge Dışa Aktarma (BIND Formatı)
nexdns zone export example.com
Bölge Dosyası İçe Aktarma
Değişiklikleri uygulamadan önce önizlemek için --dry-run kullanın:
nexdns zone import example.com zone.txt --dry-run
Bölgenin Mevcut Olmasını Sağlama
Bölgeyi yalnızca henüz mevcut değilse oluşturur (idempotent):
nexdns zone ensure example.com
Bölge Sağlığını Kontrol Etme
nexdns zone check example.com
Bölge Silme
nexdns zone delete example.com
Kayıt Yönetimi
Bir bölge içindeki DNS kayıtlarını yönetin. Tüm kayıt komutları nexdns record alt komutu altındadır.
Kayıtları Listeleme
nexdns record list example.com
Kayıt Ekleme
# 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
Kayıt Güncelleme
nexdns record update example.com <record-id> --content 5.6.7.8
Kayıt Yoksa Oluşturma
Kaydı yalnızca henüz mevcut değilse oluşturur (tür, ad ve içeriğin tam eşleşmesi). İçeriği farklı olan mevcut kayıtlara dokunulmaz – round-robin yapılandırmaları için güvenlidir. Idempotent:
nexdns record ensure example.com A www 1.2.3.4
Kayıt Silme
nexdns record delete example.com <record-id>
DNSSEC
Bölgeleriniz için DNSSEC imzalamasını yönetin.
DNSSEC Durumunu Kontrol Etme
nexdns dnssec status example.com
DNSSEC'i Etkinleştirme
nexdns dnssec enable example.com
DS Kayıtlarını Alma
Alan adı kayıt şirketinizde yapılandırmak için DS kayıtlarını alın:
nexdns dnssec ds-records example.com
DNSSEC'i Devre Dışı Bırakma
nexdns dnssec disable example.com
Kod olarak DNS
DNS altyapınızı bir nexdns.yaml dosyasında bildirimsel olarak tanımlayın ve sürüm kontrolü ile yönetin. CLI, yerel yapılandırmanızı canlı durumla karşılaştırır ve yalnızca gerekli değişiklikleri uygular.
Yapılandırma Formatı
zones:
example.com:
dnssec: true
records:
- type: A
name: "@"
content: "1.2.3.4"
ttl: 300
- type: CNAME
name: www
content: example.com
Değişiklikleri Önizleme
Hiçbir şey uygulamadan nelerin değişeceğini gösteren bir fark görüntüleyin:
nexdns apply
Değişiklikleri Uygulama
Farkı inceledikten sonra değişiklikleri uygulayın:
nexdns apply --confirm
Yalnızca Fark
nexdns diff
Canlı Durumu Çekme
Mevcut canlı DNS yapılandırmasından bir nexdns.yaml dosyası oluşturun:
nexdns pull example.com
Ortam Değişkeni Değiştirme
Yapılandırma dosyanızda ${VARIABLE} söz dizimini kullanın. CLI, uygulama sırasında ortam değişkenlerini değiştirir ve yapılandırmaları ortamlar arasında yeniden kullanmayı kolaylaştırır:
zones:
${DOMAIN}:
records:
- type: A
name: "@"
content: "${SERVER_IP}"
Docker
CLI, bir Docker imajı olarak kullanılabilir. API jetonunuzu NEXDNS_TOKEN ortam değişkeni aracılığıyla geçirin.
Komut Çalıştırma
docker run --rm -e NEXDNS_TOKEN=nxd_xxx nexdns/cli zone list
Bölge Dosyası İçe Aktarma
Bölge dosyalarını konteynere aktarmak için yerel bir dizin bağlayın:
docker run --rm -e NEXDNS_TOKEN=nxd_xxx \
-v ./zones:/zones \
nexdns/cli zone import example.com /zones/example.com.zone
Genel Bayraklar
Aşağıdaki bayraklar tüm komutlarda kullanılabilir:
| Bayrak | Açıklama |
|---|---|
--token |
API jetonu (yapılandırma dosyasını ve ortam değişkenini geçersiz kılar) |
--api-url |
API temel URL'sini geçersiz kıl (varsayılan: https://api.nexdns.tech/v1) |
--output, -o |
Çıktı formatı: table (varsayılan), json, yaml, csv |
--color |
Renkli çıktıyı zorla (auto, always, never) |
--quiet, -q |
Gerekli olmayan çıktıyı bastır |
--verbose, -v |
Ayrıntılı günlüğü etkinleştir (hata ayıklama için kullanışlı) |
--dry-run |
Değişiklikleri uygulamadan önizle |
--timeout |
İstek zaman aşımı saniye cinsinden (varsayılan: 30) |
Terraform
NexDNS Terraform sağlayıcısı, bölgeleri ve kayıtları Terraform kaynakları olarak yönetmenizi sağlar. Sağlayıcıyı Terraform Registry'den kurun ve API jetonunuzla yapılandırın.
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 entegrasyonu
DNSControl, Stack Overflow tarafından geliştirilen bir DNS-as-code aracıdır. Bölgelerinizi bildirimsel olarak yönetmek için NexDNS sağlayıcısını kullanın.
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, GitHub tarafından geliştirilen bir DNS-as-code aracıdır. NexDNS sağlayıcısını kurun ve OctoDNS yapılandırmanızda kaynak veya hedef olarak yapılandırın.
Sağlayıcıyı Kurma
pip install octodns-nexdns
Dosya config/production.yaml
providers:
nexdns:
class: octodns_nexdns.NexdnsProvider
api_token: env/NEXDNS_TOKEN
zones:
example.com.:
sources:
- config
targets:
- nexdns
Dosya 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.