Folgende Problemstellung sei gegeben:
Man hat ein Image für eine Debian-Instalation, das man auf einem Rechner (Dabei ist es egal, ob echt oder virtuell) aufgespielt hat, kein Netzwerk definiert, man kennt aber die MAC-Adresse des Netzwerk-Interfaces und will jetzt das Netzwerk konfigurieren.
Die Lösung ist relativ einfach, da man über die MAC-Adresse die IPv6-Link-Local-Adresse berechnen kann, mit der man sich dann zum sshd des Rechners verbinden kann.
Ich zeige nun wie ich das Ganze über Ansible gelöst habe.
Meine Ordnerstruktur für mein Ansible-Setup sieht so aus:
|
|
Nun werde ich erklären, was die einzelnen Dateien tun.
Die Datei hosts
sieht für dieses Beispiel so aus:
|
|
In dem Ordner host_vars
gibt es für jeden Host eine Datei. Für den Rechner xmpp.int.datenknoten.me sieht die Datei so aus:
|
|
Das Feld id
enthält eine Zahl, die für die Berechnung der IPv4 NAT Adresse und der globalen IPv6 Adresse benutzt wird. Das Feld mac
ist die MAC-Adresse des Rechners. Diese Adresse wird für die Berechnung der IPv6-Link-Local-Adresse benötigt.
Die Datei conv_mac2ll.py
enthält ein Python-Skript, welches die eigentliche Berechnung vornimmt:
|
|
Mein eigentliches Playbook für den Netzwerkkram ist dadurch sehr übersichtlich:
|
|
Da ich die Playbooks auf einer FreeBSD Kiste ausführe, heißt das Netzwerk-Interface hier vtnet0
. Unter Linux heißt dieses aller Wahrscheinlichkeit nach eth0
.
In der sysctl.conf
deaktiviere ich das Router Advertisement Protocol, da ich alles hart verdrahte:
|
|
Die Namensserver-Konfiguration ist jetzt auch nicht weltbewegend:
|
|
Und zum Schluss das Wichtigste, die Netzwerkkonfiguration:
|
|