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 без необходимости идти в панель и как-то вручную корректировать записи.
К слову, для dehydrated автор так же написал аналогичный скрипт.
Такая вот автоматизация с помощью lexicon. Возьмите на заметку, если не знали об утилите ранее.
One thought on “lexicon”