Seit der Umstellung meiner Domain auf Hetzner DNS, war ich auf der Suche nach einem passenden Automatismus, der meine dynamische IP Adresse, die ich von meinem Internet Provider zugewiesen bekomme, an einen DNS Record bei Hetzner DNS “hängt”. Es gibt zwar einige vorhandene Lösungen, jedoch keine, die sich ohne Anpassungen in meine Umgebung einbinden lässt. Also habe ich mich entschieden, selbst ein Ansible Playbook zu schreiben, dass mich Hetzner DNS als DynDNS Anbieter nutzen lässt.
Vorweg, das hier verwendete Playbook, könnt ihr in meinem Github Repository finden. Das Playbook benötigt die folgenden vier Informationen, um einen DNS Record in eurer bei Hetzner DNS verwalteten Zone hinzuzufügen bzw. täglich abzuändern.
- DNS Zone: Top Level Zone, die den von euch gewünschten Eintrag verwaltet. (In meinem Fall
thedatabaseme.de
) - Name des DynDNS Eintrags: Eintrag der Subdomain, der auf eure dynamische IP verweisen soll. (Bspw.
cloud
oderhome
) - API Key: Den im Hetzner DNS Dashboard erstellten API Key.
- Dynamische (externe) IP Adresse: Hierbei handelt es sich um die IP Adresse, die ihr (möglicherweise) täglich neu zugewiesen bekommt.
Die ersten drei Informationen sind statisch und werden damit vermutlich nicht so schnell geändert. Die dynamische IP Adresse kann sich aber möglicherweise jeden Tag ändern. Eventuell habt ihr schon ein Skript im Einsatz, dass euch täglich die aktuelle IP Adresse ermittelt, dann könnt ihr das natürlich nutzen. Solltet ihr diese Information aber nicht haben und es sich bei eurem DSL Router um eine Fritzbox handeln, dann schaut doch einfach bei meinem anderen Github Repository vorbei. Hier findet ihr ebenfalls ein Ansible Playbook, dass euch genau diese Information von der Fritzbox ermittelt. Ich habe beide Playbooks in einen “Workflow” in meinem AWX eingebunden. Die Variable external_ip_address
, wird im ersten Playbook (get_connection_info.yml
) ermittelt und im zweiten Playbook (dyndns.yml
) verarbeitet.
Nachdem ihr das oder die Repositories geclont habt, könnt ihr mit folgendem Playbook Aufruf, die IP Adresse hinter dem gewünschten Eintrag (hier home.myshinydomain.de
) ändern.
ansible-playbook -i hosts -e "api_key=<HETZNER_API_KEY> dns_zone=myshinydomain.de external_ip_address=92.2.1.118 dyndns_name=home" -k -K -u <USERNAME>
Nachdem das Playbook durchgelaufen ist, solltet ihr den Eintrag in der Hetzner DNS Konsole in der entsprechenden Zone sehen können.
Achtung: Sollte der Eintrag bereits existieren, jedoch nicht vom Typ A-Record sein, wird die Aktualisierung des Records auf einen Fehler laufen. Entfernt den Eintrag dann bitte einmal manuell. Zukünftige Aktualisierungen, werden dann ohne Fehler durchlaufen.
Philip
Pingback: Put your Homelab behind a Reverse Proxy with Nginx Proxy Manager – The Database Me