Ich habe mir mal ein kleines Script gebastelt um mir die Einrichtung von Domains unter Plesk etwas zu vereinfachen. Ich betreibe mehrere Server in Rechenzentren und habe auch ein paar Pleskinstallationen am laufen. Ich selber finde Plesksysteme für die schnelle Verwaltung von Websitehostings nicht schlecht. Jedoch habe ich eigene DNS Server die ich für meine Dienste nutzen will. Diese laufen auch auf dem bekannten ISC Server Bind9…
Unter Plesk kann man zwar DNS Server angeben die als Slave anerkannt werden, jedoch werden diese nicht automatisch eingerichtet. Allerdings hat Plesk eine sehr nette Funktion, die Eventscripts. Dies sind Scripte die ich an verschiedene Aktionen von Plesk anhängen kann. Diesen Umstand nutzt mein DNS Script. Im Grunde ist es sehr einfach. Das Script wird bei jeglichen Aktionen die Domains bzw. DNS betreffen ausgeführt und fragt die Plesk Domains aus einer Datenbank ab und transferiert die Daten an einen zweiten Linux Server mit Bind.
Hier mal der Weg für die Installation:
cd /tmp
wget http://www.networkmonkey.de/scripts/dns_sync
Nun bearbeitet ihr das Script mit eurem Lieblingseditor ich nehme gerne nano für solche Aufgaben…
nano dns_sync
Die Variablen sollten sich selbst erklären. Die Datei danach speichern und in an einen Ort kopieren wo es ausgeführt werden kann… z.B.
mv /tmp/dns_sync /usr/sbin/dns_sync
Nun brauchen wir einen SSH key für unseren ssh Benutzer… Diesen erstellen wir uns kopieren ihn gleich auf den Server wo er benötigt wird. Bitte beim kopieren des ganzen darauf achten, die gleichen Daten wie im Script angegeben zu verwenden… Auch muss dieser Schlüssel auf alle Server die unter DNS_SLAVE_SERVERS angegeben sind. Beim erstellen des Keys darauf achten KEIN Passwort einzugeben und einfach Enter drücken!!!
ssh-keygen
ssh-copy-id user@servername
Wichtig ist das der Benutzer auf dem SlaveServer auch schreibrechte in dem Bind directory hat und das Programm rndc ausführen darf. Am besten fügt man den SSH Benutzer der Gruppe bind hinzu. Zumindest unter Debian und Ubuntu klappt das ohne Probleme. Jetzt können wir das Script testen in dem wir es einfach ausführen. Es sollte keine Passwortabfrage erscheinen und die Daten sollten kopiert werden. Nun sollte auch auf dem Slaveservern eine neue Datei im Bindkonfigverzeichniss erscheinen welche den Hostnamen eures Masterservers hat mit der Endung .slave. Diese Konfig sollte nun durch die named.conf am ende eingebunden werden!!! Wenn dies geklappt hat läuft alles einwandfrei. Und wir können die Events hinzufügen.
Die Eventkonfiguration könnt ihr hier finden.
Plesk 10
Tools und Einstellungen -> Ereignissmanager
Plesk 9.5
Start -> Eventmanager
Dort fügt ihr ein neues Event hinzu. Ich habe für jeden Domainevent ein Ereignis erstellt. Unter Plesk 10 heissen die Domainevents übrigens StandardDomain. Als Priorität könnt ihr geringste einstellen und als Benutzer solltet ihr root angeben. Dies ist der Benutzer unter welchem das Script ausgeführt wird. Dieses könnt ihr natürlich auch anpassen. Als Befehlt gebt ihr nur den Pfad zu dem Script an ohne irgendwelche Parameter und schon wird das Script jedes mal bei eines dieser Events ausgelöst.
Ich hoffe dieses Script macht euch das leben auch etwas einfacher wie mir ^^
hallo networkmonkey,
habe gerade die script implementierung auf einem Ubuntu 12.04 LTS mit Plesk 11.0.9 Update #8 vorgenommen und einen kleinen Schönheitsfehler entdeckt:
– „select name from dns_zone;“ legt dir am slave ALLE domains aus der plesk db zwar als zonenfile an, jedoch hat bind dann das problem, dass bei subdomains eventuell kein transfer möglich ist wenn die subdomain zone in plesk sich mit der hauptdomain abgleichen soll.
die lösung dazu ganz einfach:
– „select name from dns_zone where status=0;“
viele grüße aus münchen