Установка
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 определяет учётные данные в следующем порядке приоритета:
- Флаг
--token(наивысший приоритет) - Переменная окружения
NEXDNS_TOKEN - Файл конфигурации
~/.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.