Перейти к основному содержимому

CLI и инструменты разработчика

Установка

CLI NexDNS – это один исполняемый файл без внешних зависимостей. Выберите подходящий способ установки.

Быстрая установка (Linux / macOS)

curl -sL https://get.nexdns.ru/cli | sh

Homebrew

brew install nexdns/tap/nexdns-cli

Docker

docker pull nexdns/cli

Проверка установки

После установки убедитесь, что CLI доступен, и проверьте версию:

nexdns version

Аутентификация

Для работы CLI необходим API-токен. Создать токен можно на странице nexdns.ru/settings/api-keys.

Сохранить токен в конфигурацию

nexdns auth token nxd_xxxxxxxxxxxxxxxxxxxx

Данный экземпляр использует API по адресу https://api.nexdns.ru/v1. Настройте URL API после аутентификации:

nexdns config set api-url https://api.nexdns.ru/v1

Переменная окружения (CI/CD)

export NEXDNS_TOKEN=nxd_xxxxxxxxxxxxxxxxxxxx

Проверка статуса аутентификации

nexdns auth status

Файл конфигурации

Токен хранится в файле ~/.nexdns/config.yaml. CLI определяет учётные данные в следующем порядке приоритета:

  1. Флаг --token (наивысший приоритет)
  2. Переменная окружения NEXDNS_TOKEN
  3. Файл конфигурации ~/.nexdns/config.yaml

Управление зонами

Управление DNS-зонами из командной строки. Все команды для зон доступны через подкоманду nexdns zone.

Список зон

nexdns zone list

Добавить зону

nexdns zone add example.com --ns-group ru

Информация о зоне

nexdns zone info example.com

Экспорт зоны (формат BIND)

nexdns zone export example.com

Импорт файла зоны

Используйте --dry-run для предварительного просмотра изменений:

nexdns zone import example.com zone.txt --dry-run

Создать зону при отсутствии

Создаёт зону только если она ещё не существует (идемпотентная операция):

nexdns zone ensure example.com

Проверка состояния зоны

nexdns zone check example.com

Удалить зону

nexdns zone delete example.com

Управление записями

Управление DNS-записями в зоне. Все команды для записей доступны через подкоманду nexdns record.

Список записей

nexdns record list example.com

Добавить записи

# 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

Обновить запись

nexdns record update example.com <record-id> --content 5.6.7.8

Создать запись при отсутствии

Создаёт запись только если её ещё нет (точное совпадение типа, имени и значения). Существующие записи с другим значением не изменяются – безопасно для round-robin. Идемпотентная операция:

nexdns record ensure example.com A www 1.2.3.4

Удалить запись

nexdns record delete example.com <record-id>

DNSSEC

Управление DNSSEC-подписью для ваших зон.

Проверить статус DNSSEC

nexdns dnssec status example.com

Включить DNSSEC

nexdns dnssec enable example.com

Получить DS-записи

Получите DS-записи для настройки у вашего регистратора домена:

nexdns dnssec ds-records example.com

Отключить DNSSEC

nexdns dnssec disable example.com

DNS как код

Описывайте DNS-инфраструктуру декларативно в файле nexdns.yaml и управляйте ею через систему контроля версий. CLI сравнивает локальную конфигурацию с текущим состоянием и применяет только необходимые изменения.

Формат конфигурации

zones:
  example.com:
    dnssec: true
    records:
      - type: A
        name: "@"
        content: "1.2.3.4"
        ttl: 300
      - type: CNAME
        name: www
        content: example.com

Предварительный просмотр изменений

Показать diff изменений без их применения:

nexdns apply

Применить изменения

Применить изменения после просмотра diff:

nexdns apply --confirm

Только diff

nexdns diff

Получить текущее состояние

Сгенерировать nexdns.yaml из текущей конфигурации DNS:

nexdns pull example.com

Подстановка переменных окружения

Используйте синтаксис ${VARIABLE} в файле конфигурации. CLI подставляет переменные окружения при применении, что позволяет переиспользовать конфигурации в разных окружениях:

zones:
  ${DOMAIN}:
    records:
      - type: A
        name: "@"
        content: "${SERVER_IP}"

Docker

CLI доступен в виде Docker-образа. Передайте API-токен через переменную окружения NEXDNS_TOKEN.

Выполнение команд

docker run --rm -e NEXDNS_TOKEN=nxd_xxx \
    -e NEXDNS_API_URL=https://api.nexdns.ru/v1 nexdns/cli zone list

Импорт файла зоны

Подключите локальную директорию для передачи файлов зон в контейнер:

docker run --rm -e NEXDNS_TOKEN=nxd_xxx \
    -v ./zones:/zones \
    nexdns/cli zone import example.com /zones/example.com.zone

Глобальные флаги

Следующие флаги доступны для всех команд:

Флаг Описание
--token API-токен (переопределяет файл конфигурации и переменную окружения)
--api-url Переопределить базовый URL API (по умолчанию: https://api.nexdns.ru/v1)
--output, -o Формат вывода: table (по умолчанию), json, yaml, csv
--color Принудительная цветная подсветка (auto, always, never)
--quiet, -q Подавить несущественный вывод
--verbose, -v Включить подробное логирование (полезно для отладки)
--dry-run Предварительный просмотр изменений без применения
--timeout Таймаут запроса в секундах (по умолчанию: 30)

Terraform

Terraform-провайдер NexDNS позволяет управлять зонами и записями как ресурсами Terraform. Установите провайдер из Terraform Registry и настройте его с помощью API-токена.

provider "nexdns" {
  api_token = var.nexdns_token
  api_url   = "https://api.nexdns.ru/v1"
}

resource "nexdns_zone" "main" {
  name     = "example.com"
  ns_group = "ru"
}

resource "nexdns_record" "www" {
  zone_id = nexdns_zone.main.id
  type    = "A"
  name    = "www"
  content = "1.2.3.4"
}

Интеграция с DNSControl

DNSControl – инструмент DNS-as-code от Stack Overflow. Используйте провайдер NexDNS для декларативного управления зонами.

creds.json

{
    "nexdns": {
        "TYPE": "NEXDNS",
        "api_token": "nxd_xxxxxxxxxxxxxxxxxxxx",
        "api_url": "https://api.nexdns.ru/v1"
    }
}

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 – инструмент DNS-as-code от GitHub. Установите провайдер NexDNS и настройте его как источник или цель в конфигурации OctoDNS.

Установка провайдера

pip install octodns-nexdns

Пример config/production.yaml

providers:
  nexdns:
    class: octodns_nexdns.NexdnsProvider
    api_token: env/NEXDNS_TOKEN
    api_url: https://api.nexdns.ru/v1

zones:
  example.com.:
    sources:
      - config
    targets:
      - nexdns

Пример 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.

Мы используем файлы cookie и метрические программы (Яндекс Метрика) для анализа посещаемости, улучшения работы сайта и оценки эффективности рекламы. Метрические программы собирают данные о вашем поведении на сайте, которые являются персональными данными. Обработка осуществляется в соответствии с законодательством о персональных данных (ФЗ-152).

Вы можете принять использование всех файлов cookie или ограничиться только необходимыми. Подробнее: Политика обработки персональных данных и Политика cookie.

Необходимые cookie (всегда активны)
Аналитические cookie (Яндекс Метрика)