NixOS und NixOps

Aleksey Mnogosmyslov, 123RF

Strenger Herr

Das Management der Konfiguration von Linux-Systemen ist fehlerträchtig. NixOS will es mit einem neuartigen Ansatz bereinigen. Besonders gut eignet es sich im Zusammenspiel mit NixOps zum Deployment von virtuellen Servern.
Das Titelthema im ADMIN 04/14 "Vernetzt speichern" sind Netzwerkdateisysteme, etwa Samba 4, verteilter Storage mit Ceph & GlusterFS und der Unix-Klassiker ... (mehr)

Updates von Linux-Distributionen sind immer mit einer gewissen Gefahr verbunden. Werden alle konfigurierten Dienste nach der Aktualisierung noch genauso funktionieren wie vorher? Oder hat wieder einmal ein Daemon das Format seiner Konfigurationsdateien so geändert, dass das Programm überhaupt nicht mehr startet? Zumindest sind die meisten Linux-Distributionen so intelligent, die vom Anwender geänderten Config-Dateien nicht einfach zu überschreiben. Aber einen definierten Upgrade-Pfad, der die Funktion des aktualisierten Systems sicherstellt, gibt es meistens nicht.

Einen alternativen Weg dazu beschreitet das Nix-Projekt, das einen speziellen Paketmanager, eine Paketsammlung, eine Linux-Distribution und noch zwei weitere Tools umfasst, die hier keine Rolle spielen. Ein Nix-System unterscheidet sich in einigen Punkten fundamental von gewohnten Linux-Distributionen. So wird der Zustand des Systems deklarativ festgelegt, statt imperativ, also durch die Eingabe von Anweisungen wie "installiere jetzt Software-Paket X" den Systemzustand zu ändern. Gleichzeitig gehorchen die Anweisungen des Nix-Paketmanagers funktionalen Prinzipien: Es gibt einen Eingabezustand, der in die Funktion (den Paketmanager) eingegeben wird, und als Ausgabe einen neuen Systemzustand. Sogenannte Seiteneffekte sind dabei nicht erlaubt.

Ganz oder gar nicht

Konfigurationsänderungen in NixOS sind atomar und transaktional, werden also entweder korrekt ausgeführt oder gar nicht. Auch Rollbacks zu einem früheren Systemzustand sind möglich. Eine neue Konfiguration lässt sich sogar im aktuellen System testen, ohne sie gleichzeitig zur Standardkonfiguration beim nächsten Booten zu machen. Beim erfolgreichen Ablauf einer Transaktion aktualisiert Nix im letzten Schritt eine ganze Reihe von Referenzen, konkret symbolische Links, mit denen sich der Anwender in einer komplett neuen Umgebung wiederfindet. Der alte Systemzustand ist weiterhin auf dem Rechner vorhanden, nur die Referenzen wurden aktualisiert.

Grundsätzlich übersetzt Nix Pakete aus dem Quellcode, um sie an das System anpassen zu können. Da dies viel Zeit kostet, lädt der Nix-Paketmanager aber automatisch Binärpakete von der NixOS-Website, wenn es sie gibt. Als kleinen Bonus bietet NixOS zum Ausgleich die Möglichkeit, Pakete auch als Nicht-Root-Benutzer in einem eigenen Bereich zu installieren. Außerdem können mehrere Versionen einer Software oder Bibliothek gleichzeitig auf dem System existieren.

Viele Plattformen

Der Nix-Paketmanager lässt sich grundsätzlich auch auf anderen Linux-Distributionen wie auch FreeBSD und OS X verwenden. Allerdings bilden die mit Nix installierten Pakete dann auf diesen Systemen eine Art Paralleluniversum, das seine Pakete unterhalb von »/nix/store« pflegt. Binär-Downloads der aktuellen Nix-Version 1.6.1 gab es zu Redaktionsschluss beispielsweise für Debian 7.2, Ubuntu 13.10, Fedora 19, FreeBSD und OS X, um nur die aktuellen Versionen zu nennen. Generische Binärpakete für Linux sowie der Source-Code sind auf der Website ebenfalls zu finden.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019