•  untoreh-light

alpin

Kiefer, Alpine Linux basierend auf OSTree

Auswählen was Betriebssystem auf Ihren Servern läuft, ist eine Frage der Bequemlichkeit und Vertrautheit. Bequemlichkeit bedeutet, dass Sie etwas wollen, das Ihnen so wenig Ärger wie möglich bereitet, Vertrautheit bedeutet, dass Sie es bevorzugen würden nicht um zusätzliche Dinge zu lernen, wenn Sie nicht müssen.

Meine Server sind Haustiere Ich bin also in Ordnung, ab und zu ein paar Befehle manuell auszugeben, und benötige keine vollständige Automatisierung.

Nach dem Ausprobieren CoreOS für ein Jahr wechselte ich zu meiner eigenen vereinfachten verteilen basierend auf alpinen und Ostree.

Ziele

Diese Version von Alpine orientiert sich an Flachwagen und projekt-atomar und soll als schreibgeschütztes Root-Dateisystem installiert werden, wobei Aktualisierungen atomar erfolgen, dh entweder sie erfolgreich sind oder das System in den vorherigen Zustand zurückwechselt. Damit dies möglich ist, muss das System immer mindestens zwei Schnappschüsse der freigegebenen Dateisystemversion, die auf dem Speicher verfügbar ist.

Ziele

In welchen Umgebungen wird das System laufen? Ich habe gezielt OVZ und [KVM], aber im Allgemeinen kann man sagen Behälter und virtuelle Maschinen mit dem Hauptunterschied, dass Container keinen eigenen Kernel ausführen, insbesondere keinen Bootprozess haben, sie rufen direkt in die drin System (das zum Beispiel in aDockerfile es wäre definiert durch dieCMD oderENTRYPOINT -Anweisungen), die für die Verwaltung des Prozessbaums verantwortlich ist, der den Container am Laufen hält (genau wie eine normale Sitzung, wenn der Init-Prozess abbricht, wird der Container beendet). Außerdem können Container keine System-Knöpfe konfigurieren und können zusätzliche Einschränkungen hinsichtlich der Funktionen haben.

Halbieren des Build-Prozesses

Wie ist das Bild aufgebaut?

Abhängigkeiten

Dieprepare.sh Das Skript behandelt Abhängigkeiten, von denen die meisten Pakete sind, die gängige CLI-Tools anbieten wiecoreutils, util-linux, binutils , Dienstprogramme für den Betrieb mit Blockgeräten wieblkid, sfdisk, multipath-tools und Dateisysteme mitxfsprogs unde2fsprogs . Diesquashfs-tools package wird am Ende verwendet, um das erstellte Root-Dateisystem zu komprimieren. EINglib Kompatibilitätspaket wird ebenfalls standardmäßig installiert, da alpine auf basiertmusl funktioniert das Kompatibilitätspaket, indem es einige Bibliotheken bereitstellt, die gegen .

Der Baum

Dateibäume für VMs und Container werden entsprechend erstelltmake.sh undmake_ovz.sh . Dies ist eine vereinfachte Beschreibung der Schritte

Bei Containern ist die Reihenfolge dieselbe, jedoch ändert sich die Konfiguration, da bei einem System, das nicht von einem Bootloader ostree hat Probleme bei der Überprüfung der Umgebung, wir müssen einige anwenden Problemumgehungen und richten Sie einige Geräte ein, die normalerweise von der initramfs Schritt. Das ist wie OVZ oder LXC Vorlagen konfiguriert sind.

Verpackung

Sobald wir unseren Ostree-Commited-Dateibaum habenbuild.sh oderbuild-update.sh kümmert sich um die Produktion des zu verteilenden Artefakts. Der Unterschied zwischen den Skripten besteht darin, dass die Update-Version von einem früheren ostree-Repository startet und Auch erzeugt ein Delta-Artefakt, das ein laufendes System auf seine Ostree-Instanz anwenden kann, um Upgrades durchzuführen. Dies ist eine vereinfachte Beschreibung der Build-Schritte

Die Partitionskonfiguration wird mit einer fdisk . angewendetlayout.cfg Datei, die die Partitionsgrößen definiert, haben wir eine Partition für die rootfs (~430M ), die Bootpartition (~40M ) und eine Swap-Partition (~40M ). Bei Containern überspringen Sie einfach das Mounten des vorherigen Builds über ein Loop-Gerät und ziehen einfach den neuen ostree-Commit über das alte (extrahierte) ostree-Repository.

Anpassungen

Was bündele ich in diesem Image (abgesehen von installierten Paketen)?

Was war und ist nicht mehr

Installation

Um das Image zu installieren, können Sie es entweder beim Hosting-Provider hochladen und von VNC aus installieren, im Fall von virtuellen Maschinen, aber normalerweise hijacke ich eine vorhandene Installation, da dies immer möglich ist, solange ich das Setup-Skript gegen die Version von getestet habe die Linux-Distribution, im Allgemeinen verwende ich Debian-8 oder Ubuntu-14, habe andere nicht getestet, da ich diese immer als verfügbar gefunden habe. Die Einrichtungsschritte folgen

Schlussfolgerungen

ich machte Kiefer 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on NATed Server, die dazu neigen, extrem niedrige Ressourcen anzubieten, eigentlich habe ich eine Box mit nur64M RAM und habe immer noch alle Funktionen, die ich benötige.

[1]Root-Dateisystem

Post-Tags: