Slave DNS verwalten
Posted: Thu 20. Jan 2022, 20:27
Ich hatte ja angekündigt, dass ich mir was bastel um das DNS-System mit so wenig wie möglich Aufwand zu pflegen.
Ich habe vor, das hier häppchenweise zu dokumentieren.
Das Tool, ich habe es schlicht bindAPI genannt, besteht aus einem CLI Client, der auf jedem DNS Server installiert wird.
Dieser hat Kenntnis über alle Keyhelp-Server in eigener Verantwortlichkeit und alle Nameserver.
Zusätzlich weiß der Client, für welche Domains der Server verantwortlich ist, und managed API-Keys für andere Clients, die sich mit ihm verbinden können.
So zeigt sich aktuell das CLI tool: check:permissions (offen): Prüft die Zugriffsrechte unter dem Ordner /etc/bind
Der User unter dem die API auf dem Webserver läuft, und der CLI nutzer ist, muss in der Gruppe bind sein, und die Gruppe muss ein paar Schreibrechte bekommen.
check:panel (angefangen, noch nicht commited): Prüft für ein oder alle Panel (Keyhelp-Instanzen) für welche Domains sie verantwortlich sind, und ob alle Nameserver auf aktuellem Stand sind.
Wenn man alle gleichzeitig prüfen lassen will, muss man den jeweiligen APIkey in der Datenbank hinterlegen.
Wer das nicht möchte, kann einzeln prüfen und den Key an den CLI-Client pipen.
check:domains (offen): Prüft alle Zonen, für die der Server zuständig ist.
Die restlichen Sachen sind eigentlich selbsterklärend, hoffe ich, die üblichen CRUD Aktionen auf Datenbanken.
Bei apikeys gibt es kein Update, macht keinen Sinn, weil der Key verschlüsselt gespeichert wird.
Wenn, dann löschen und neu anlegen.
Ausser nameserver ist das fertig.
Die REST-Api orientiert die an der von Keyhelp, man muss also für Client einen Key anlegen, und den als X-API-Key Header mitsenden, und die API ansprechen zu können.
Über die API kann man Domains anlegen, bearbeiten, anzeigen lassen und löschen.
Unterstützt werden GET, POST, PUT und DELETE.
Ich spiele mit dem Gedanken, noch eine OpenAPI/Swagger Dokumentation anzuflanschen.
Die Daten existieren für jeden DNS-Server einzeln. Ich bin mir noch unschlüssig, ob es schöner wäre, die Daten nur 1x zentral zu halten, aber dafür mehr Daten synchronisieren zu müssen.
Einsatzbereit ist es wie gesagt noch nicht, aber falls jemand neugierig ist, kann er ja schon mal einen Blick drauf werfen.
https://git.24unix.net/tracer/bindAPI
Wenn ich die Dokumention hier fertig habe werde ich sie (in Englisch) als README in Git übernehmen.
Ich habe vor, das hier häppchenweise zu dokumentieren.
Das Tool, ich habe es schlicht bindAPI genannt, besteht aus einem CLI Client, der auf jedem DNS Server installiert wird.
Dieser hat Kenntnis über alle Keyhelp-Server in eigener Verantwortlichkeit und alle Nameserver.
Zusätzlich weiß der Client, für welche Domains der Server verantwortlich ist, und managed API-Keys für andere Clients, die sich mit ihm verbinden können.
So zeigt sich aktuell das CLI tool: check:permissions (offen): Prüft die Zugriffsrechte unter dem Ordner /etc/bind
Der User unter dem die API auf dem Webserver läuft, und der CLI nutzer ist, muss in der Gruppe bind sein, und die Gruppe muss ein paar Schreibrechte bekommen.
check:panel (angefangen, noch nicht commited): Prüft für ein oder alle Panel (Keyhelp-Instanzen) für welche Domains sie verantwortlich sind, und ob alle Nameserver auf aktuellem Stand sind.
Wenn man alle gleichzeitig prüfen lassen will, muss man den jeweiligen APIkey in der Datenbank hinterlegen.
Wer das nicht möchte, kann einzeln prüfen und den Key an den CLI-Client pipen.
check:domains (offen): Prüft alle Zonen, für die der Server zuständig ist.
Die restlichen Sachen sind eigentlich selbsterklärend, hoffe ich, die üblichen CRUD Aktionen auf Datenbanken.
Bei apikeys gibt es kein Update, macht keinen Sinn, weil der Key verschlüsselt gespeichert wird.
Wenn, dann löschen und neu anlegen.
Ausser nameserver ist das fertig.
Die REST-Api orientiert die an der von Keyhelp, man muss also für Client einen Key anlegen, und den als X-API-Key Header mitsenden, und die API ansprechen zu können.
Über die API kann man Domains anlegen, bearbeiten, anzeigen lassen und löschen.
Unterstützt werden GET, POST, PUT und DELETE.
Ich spiele mit dem Gedanken, noch eine OpenAPI/Swagger Dokumentation anzuflanschen.
Die Daten existieren für jeden DNS-Server einzeln. Ich bin mir noch unschlüssig, ob es schöner wäre, die Daten nur 1x zentral zu halten, aber dafür mehr Daten synchronisieren zu müssen.
Einsatzbereit ist es wie gesagt noch nicht, aber falls jemand neugierig ist, kann er ja schon mal einen Blick drauf werfen.
https://git.24unix.net/tracer/bindAPI
Wenn ich die Dokumention hier fertig habe werde ich sie (in Englisch) als README in Git übernehmen.