lexicon

lexicon — утилита, для управления настройками NS на разных DNS сервисах. Используя её, мы можем организовать централизованное управление записями на неймсерверах провайдеров, используя их API, без необходимости ручных правок в панелях.

Список провайдеров, которые поддерживает lexicon очень большой, тут есть и популярные сервисы (Cloudflare, Cloudns и т. п.) и их чуть менее известные аналоги. Мы на утилиту посмотрим в CentOS и подключим к ней Cloudflare аккаунт.

1. Ставим всё необходимое для работы:

yum install epel-release
yum install openssl-devel python-devel python-pip python-urllib3
pip install --upgrade pip
pip install requests[security]

2. Ставим саму утилиту:

pip install dns-lexicon

3. Добавляем нужные данные для авторизации. Здесь нам потребуется API ключ, который мы получаем в панели Cloudflare и email учётной записи там. Забиваем эти данные в переменные, с которыми работает скрипт:

export PROVIDER=cloudflare
export LEXICON_CLOUDFLARE_USERNAME=vasyan@sysadmin.pm
export LEXICON_CLOUDFLARE_TOKEN=8d09d33d36c4aea291ab5xda21bed014a04ed

4. И далее, просто работаем с доменами в аккаунте.

  • Выведем все MX записи домена:
# lexicon cloudflare list sysadmin.pm MX

ID TYPE NAME CONTENT TTL
-------------------------------- ---- ----------- --------------------- ---
e66512751e55c7d1b7723723cc29f62f MX sysadmin.pm mail.protonmail.ch 1 
fee397ced495d2d7c5ec504c56949c17 MX sysadmin.pm mailsec.protonmail.ch 1
  • Добавим TXT запись для верификации домена:
# lexicon cloudflare create sysadmin.pm TXT --name="_acme-challenqe.sysadmin.pm." --content="uH632Tz_edMhOLGOAg5Z9YMmqgyETYbMjwF32n_ie9nQ"
  • Проверим что она создалась:
# lexicon cloudflare list sysadmin.pm TXT | grep challenqe
77f47395ca51d0a676547ca3cf6598cc TXT _acme-challenqe.sysadmin.pm uH632Tz_edMhOLGOAg5Z9YMmqgyETYbMjwF32n_ie9nQ
  • И удалим при ненадобности:
# lexicon cloudflare delete sysadmin.pm TXT --name="_acme-challenqe.sysadmin.pm." --content="uH632Tz_edMhOLGOAg5Z9YMmqgyETYbMjwF32n_ie9nQ"

Вот так просто, можно автоматизировать задачи в которых требуется работа с удалённым DNS.

Автоматизация получения SSL с lexicon.

Типичный кейс здесь — создние Wildcard сертификатов от Let’s Encrypt для домена. LE, при этом, требуют верификацию с помощью DNS, и мы этот процесс можем автоматизировать.

Скачаем специально подготовленный для этого скрипт:

# wget https://github.com/AnalogJ/lexicon/raw/master/examples/certbot.default.sh
# chmod +x /root/certbot.default.sh

В скрипте, в параметре PROVIDER_CREDENTIALS нам нужно указать полученные у провайдера логин (email) и API. Сохраняем изменения и выполняем команду:

# certbot certonly --manual -d userspace.me -d *.userspace.me --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --manual-auth-hook "/root/certbot.default.sh auth" --manual-cleanup-hook "/root/certbot.default.sh cleanup"

Ждём пару минут, и получаем готовый сертификат от Let’s encrypt без необходимости идти в панель и как-то вручную корректировать записи.

lexicon

К слову, для dehydrated автор так же написал аналогичный скрипт.

Такая вот автоматизация с помощью lexicon. Возьмите на заметку, если не знали об утилите ранее.

One thought on “lexicon

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *