Das Titelthema im ADMIN 04/14 "Vernetzt speichern" sind Netzwerkdateisysteme, etwa Samba 4, verteilter Storage mit Ceph & GlusterFS und der Unix-Klassiker ... (mehr)

NixOps

Der vielleicht interessanteste Teil des Nix-Projekts baut auf den bisher beschriebenen Komponenten auf und bringt sie in einem Kontext zur Anwendung, für den sich die Prinzipien des Projekts am besten eignen: Virtualisierung und Cloud Computing. Wenn es darum geht, eine mehr oder weniger große Anzahl virtueller Maschinen bereitzustellen, bietet sich zumindest die deklarative Festlegung ihrer Konfiguration schon einmal an. Umso besser, wenn sich das, wie im Fall von NixOS, damit verbinden lässt, die Funktionalität der VMs sicherzustellen und zu testen.

Die Basis für NixOps ist das gleichnamige Tools, das sich sehr leicht installieren lässt, wenn man schon den Nix-Paketmanager verwendet. Am einfachsten geht das Ganze in jedem Fall mit NixOS. NixOps ist dann mit einem Aufruf von »nix-env -i nixops« im Handumdrehen installiert. Die Beschreibung einer einfachen VM, die anschließend in Virtualbox laufen soll, ist in Listing 3 zu sehen. Das Beispiel stammt aus dem NixOps-Manual [2] und demonstriert, wie wenig Information für eine virtuelle Maschine nötig ist. Neben der Beschreibung genügen wenige Zeilen, um einen Webserver zu starten und das Document-Root auf ein bestimmtes Verzeichnis – in diesem Fall die Valgrind-Dokumentation – einzustellen. Eine weitere Datei, in Listing 4 zu sehen, legt die Deployment-Variablen fest, also Virtualbox als Target-Umgebung sowie die Größe des Hauptspeichers.

Listing 4

trivial-vbox.nix

 

Listing 3

trivial.nix

 

Der folgender Aufruf erzeugt aus den Beschreibungen schließlich eine virtuelle Maschine mit dem Namen »test« :

nixops create ./trivial.nix ./trivial-vbox.nix -d test

Inspiziert man den Zustand der neuen VM mit »nixops info -d test« , wird man feststellen, dass dieser derzeit beim Status »New« verharrt. Das bedeutet, im Wesentlichen ist noch gar nichts passiert, es gibt noch keine VM, sie wurde bisher praktisch nur reserviert. Erst das Kommando »nixops deploy -d test« sucht sich die nötigen Dateien, setzt die VM zusammen und startet sie auf der Deployment-Plattform, hier Virtualbox. Wie das NixOps-Manual demonstriert, lassen sich auf die gleiche Art auch Multi-Machine-Setups aufbauen, etwa für Loadbalancer.

Amazon inklusive

In der Praxis wird man vermutlich seltener Virtualbox als Deployment-Plattform einsetzen, sondern seine VMs beispielsweise in der Amazon-Cloud betreiben, die NixOps ebenso unterstützt. Support bietet NixOps dabei insbesondere für die Dienste EC2, S3-Storage und den Simple Queue Service (SQS) sowie Authentifizierung über den IAM (Identity and Access Management) und SSH-Schlüsselpaare.

Obwohl sich NixOps schwerpunktmäßig auf virtualisierte Systeme konzentriert, bietet es interessanterweise auch die Möglichkeit, physische Systeme für den Hosting-Provider Hetzner [4] zu installieren, also sogenanntes Bare Metal Deployment. Hierbei greift NixOps zum Deployment nicht wie bei Amazon auf eine Storage-API zurück, um eine VM zu installieren, sondern verwendet die von Hetzner bereitgestellte Rettungs-Console, um das neue System zu bootstrappen. Prinzipiell spricht nichts dagegen, diese Methode auch auf andere Hoster und Cloud-Anbieter anzuwenden und ähnliche Backends dafür zu schreiben. Solche Unterstützung wäre in der NixOps-Community sicher willkommen.

Ähnliche Artikel

comments powered by Disqus
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

Ausgabe /2023