Kilka dni temu na DNSy Cloudflare przenosiłem domenę nowego klienta. Niby standard, bo jest to operacja, którą wykonuję przynajmniej kilka razy w miesiącu. Tym razem jednak trafiła się niespodzianka w postaci zaciągniętych ponad 500 rekordów DNS „ze starych” DNSów. I może nie byłoby to problemem, gdyby nie fakt, że w Cloudflare – tak jak i w wielu innych miejscach/serwisach – nie ma możliwości zbiorczego zarządzania (w tym kasowania) rekordów w DNSach. Przynajmniej jeśli chodzi o panel zarządzania kontem/domeną…
Spis treści w artykule
Kasowanie rekordów DNS w Cloudflare
Wizja ręcznego kasowania zbytecznych rekordów (wybierz, kasuj, potwierdź, wybierz, kasuj, potwierdź… i tak ponad 500 razy) nawet nie tyle, że nie była kusząca, ile wymagałaby zatrudnienia do tego jakiejś małpki (nawet niekoniecznie z magisterką z informatyki ;-)).
Na szczęście Cloudflare oferuje dostęp po API, i choć tam też nie ma możliwości hurtowego kasowania rekordów w DNSach, to na szczęście możemy to zautomatyzować za pomocą prostego skryptu:
#!/bin/bash
CF_API_KEY=ac79b94cd81ea4efa8eda5ab8a2ed5c44de5cd
[email protected]
DOMAIN=webinsider.pl
ZONE_ID=2a4bcde3f4a3be5c4575abf5def6a2b
curl -X GET "https://api.cloudflare.com/client/v4/zones/"$ZONE_ID"/dns_records?per_page=1000" \
-H "X-Auth-Email: "$CF_EMAIL \
-H "X-Auth-Key: "$CF_API_KEY \
-H "Content-Type: application/json" | jq .result[].id | tr -d '"' | (
while read RECORD_ID; do
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/"$ZONE_ID"/dns_records/"$RECORD_ID"" \
-H "X-Auth-Email: "$CF_EMAIL \
-H "X-Auth-Key: "$CF_API_KEY \
-H "Content-Type: application/json"
done
)
Następnie wystarczy skrypt zapisać, nadać odpowiednie uprawnienia (w systemie Linux/Debian):
sudo chmod +x nazwa_skryptu
I uruchomić.
Skrypt korzysta z programu cURL, który można – w przypadku braku – zainstalować w systemie Ubuntu/Debian za pomocą polecenia:
sudo apt-get install curl
Skrypt korzysta również z programu JQ, który służy do przetwarzania odpowiedzi w formacie JSON, które są zwracane z API Cloudflare.
jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.
Jest dość prawdopodobne, że przed uruchomieniem skryptu program ten trzeba będzie zainstalować w systemie. W przypadku systemu Debian/Ubuntu w tym celu wystarczy skorzystać z polecenia:
sudo apt-get install jq
Oczywiście skrypt wymaga konfiguracji, ale ta jest dość banalna:
- CF_API_KEY – klucz API Cloudflare, do pozyskania w ustawieniach konta
- CF_EMAIL – adres e-mail używany do logowania się do Cloudflare
- DOMAIN – domena, na której chcemy wykonać operację
- ZONE_ID – identyfikator przypisany do danej domeny, do pozyskania w ustawieniach konta
Skrypt domyślnie przy każdym uruchomieniu (w pętli) skasuje do 1000 rekordów, ale można to zmienić, modyfikując ten fragment kodu:
?per_page=1000
Można zmienić, lub uruchomić kolejny raz skrypt… ;-)
Identyfikatory i klucze API
Szykując się do tego artykułu przygotowałem kolejne „zapytania API” w celu pobrania kolejnych niezbędnych danych, takich jak np. Zone ID. Ostatecznie uznałem, że jest to zbyteczne, bo wszystkie te informacje są dostępne bezpośrednio w panelu zarządzania Cloudflare i nie ma co niepotrzebnie komplikować artykułu/poradnika. A jak ktoś bardzo chce (lub musi), to wszystko znajdzie w dokumentacji Cloudflare…
Wyjątek zrobić postanowiłem dla elementu związanego z autoryzacją, czyli kluczem API.
Dlatego, że wprawdzie klucz API jest również dostępny w panelu, to np. ze względów bezpieczeństwa, zamiast globalnego klucza API można wygenerować klucz dedykowany do tej operacji (modyfikacja rekordów DNS dla wybranej domeny):
W przypadku takiego „dedykowanego” klucza w skrypcie zmieniamy linki związane z autoryzacją konta:
-H "X-Auth-Email: "$CF_EMAIL \
-H "X-Auth-Key: "$CF_API_KEY \
Na:
-H "Authorization: Bearer [DEDYKOWANY_TOKEN_API]" \
Taka „podmiana” klucza API nie jest wymagana, to czasem warto z niej skorzystać – czy to ze względów bezpieczeństwa jeśli chodzi o sam dostęp do konta, jak i ograniczenia możliwości, by w razie ewentualnej pomyłki w kodzie zminimalizować potencjalne szkody… ;-)
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01