Serie Automatisieren
Hier beginnt eine kleine Serie von Beiträgen, die sich um sauber Reproduzierbares und damit auch automatisierbares Arbeiten handelt. In jedem Beitrag wird ein weiterer Schritt dahin behandelt. Zuerst beginnen wir mit der Versionskontroll-Software git. Dann wagen wir den Schritt hin zu Ansible und schauen, wie weit man die Automatisierung bei der Heimserverei treiben kann. Das Ziel ist auch Proxmox und TrueNAS damit zu steuern. Ob das sinnvoll und realistisch ist, wird sich zeigen.
Versionskontrolle behalten!
Ich habe es viel zu lange hinausgeschoben Versionierungs-Software zu verwenden. Zuerst habe ich an Github gedacht, aber nach dem Kauf von Microsoft, muss ich nicht noch unbedingt einen Dienst von einer der größten IT-Firmen nutzen. Glücklicherweise gibt es viele Alternativen, vor allem für die Selbst-Hoster. Das Problem dabei ist, dass die Repositorien bei dieser Lösung standardmäßig nur im eigenen LAN/WLAN verfügbar ist. Ich verwende zwar auch Tailscale, aber damit kann ich auch nur selbst von der Ferne aus zugreifen. Nicht optimal. Eine potenziell für alle offene Seite selbst zu hosten klingt nach Aufwand, wenn man es sicher betreiben möchte. Vielleicht kommt so etwas noch (ich habe zum Beispiel schon eine lokale Gitea Installation mithilfe eines LXC TurnkeyLinux Container Template unter Proxmox installiert). Also wäre es doch nicht schlecht einen Dienst zu nutzen, der die Fertigkeiten von einfachen Git-Services mit öffentlich zugänglichem Web-UI kombiniert. Auf der Suche bin ich auf verschiedene Lösungen gestoßen, aber am besten für meine Zwecke hat dann doch Codeberg gewirkt. Basierend auf einem Fork von Gitea, Forgejo, betrieben von einem Verein in Berlin, der sich der Verbreitung von Open Source im Internet verschrieben hat.
Account erstellen und git anwerfen
Als erstes muss man sich einen Account bei Codeberg erstellen. Wie bei Github bestimmt auch der Benutzername den Link für das Nutzen von Repositories:
codeberg.org/user/repo
Als nächstes sollte man Zweifaktor-Authentifizierung für den Codeberg-Account aktivieren.
Da ich mit einem Linux Fedora Framework Laptop arbeite, werde ich zuerst einmal alles zu Fuß gehen, sprich die Ersteinrichtung via dem Programm git
(ja, von da kommt die Ganze git
-lerei) machen und mich mit den Konsolenbefehlen vertraut machen. Dazu empfiehlt sich die Dokumentation von Codeberg. Nach der Installation von git
für das jeweilige System (auch für Windows und MacOS verfügbar), kann man git
für Codeberg konfigurieren.
Zuerst Usernamen und Emailadresse des Codeberg-Accounts angeben (alle Codebeispiele aus der Codeberg’schen Doku):
git config --global user.name 'username'
git config --global user.email 'username@example.com'
Um sich das so eben Konfigurierte noch einmal vor Augen zu führen führt man diesen Befehl aus:
git config --global --list
Wenn man möchte kann man die Email-Adresse beim Commiten auch ausblenden lassen.
Um git
vom lokalen Rechner mit Codeberg zu verbinden muss man zuerst einen SSH-Key erstellen und bei den Codeberg-Einstellungen einfügen. Danach sollte man sich einmal manuell verbinden und diese Hinweise befolgen, um Man-in-the-middle-Attacken zu vermeiden. Das kann so machen:
git clone git@codeberg.org:Codeberg/Documentation
Und schaut so aus:
Nun testen wir die Verbindung:
ssh -T git@codeberg.org
Wenn man eine Meldung bekommt, dass die Verbindung erfolgreich verlaufen ist, kann man noch git
so konfigurieren, dass der SSH-Key, anstelle eines GPG-Signierungsverfahrens, verwendet wird.
Zuerst Format von GPG auf SSH umstellen:
git config --global gpg.format ssh
Dann noch Bescheid geben, wo denn dieser tolle SSH-Public-Key ist:
git config --global user.signingKey ~/.ssh/id_ed25519.pub
Den Pfad für den gewählten Public-Key anpassen. Und tatsächlich auf SSH-Betrieb umstellen mit:
git config --global gpg.format ssh
Sehr gut, Codeberg ist aufgesetzt, wir haben SSH-Keys hinterlegt und den SSH-Fingerabdruck verifiziert und wir können auf das eigene Repo zugreifen.
”Wann’s beim git a so druckt” - clone, push und pull
Jetzt muss das Repo hinzufügen
git remote add origin git@codeberg.org:macl/ansible.git
und
git remote -v
Und das lokale Repository auf das Remote-Repository “pushen”:
git push -u origin master
Dann wird alles hochgeladen:
Und man kann den Spaß im WebUI betrachten:
Eventuell werde ich das Repo auf public stellen. Das kommt dann in einem zukünftigen Beitrag.
Fazit
Die Einrichtung von Codeberg geht recht schnell und für mich passt diese Github-Alternative sehr gut. Im nächsten Beitrag geht es um die Grundlagen von git.