Drahtlose Netzwerke sind überall: Zu Hause, im Café und in der Firma. Im Gegensatz zu Kabelnetzen verliert der Admin bei WLANs allerdings schnell die ... (mehr)

SmartOS selber einsetzen

Wer die Vorteile von SmartOS selbst erfahren möchte, muss nicht Kunde von Joyent werden, denn SmartOS steht als freie Software zur Verfügung. Zum Download gibt es mehrere Optionen: verschiedene Images für CDs, USB-Sticks und virtuelle Maschinen sowie Dateien zum PXE-Booten.

SmartOS wird nicht auf der Festplatte installiert, denn ein aktuelles System ist am ehesten gewährleistet, wenn keine alten Dateien auf dem Dateisystem liegen. Das Betriebssystem wird also stets komplett von einem Medium gebootet, während die virtuellen Maschinen auf einem ZFS-Storage-Pool dauerhaft gespeichert sind. Im einfachsten Fall startet man SmartOS von USB-Stick oder CD, in Produktivumgebungen am besten über PXE von einem Server.

Am sinnvollsten ist für SmartOS ein echter Rechner, denn es setzt das Vorhandensein der Prozessorfeatures (nur Intel) VMX (VT) und EPT (Extended Page Tables) voraus, die in virtualisierten Systemen nicht unbedingt gegeben sind. Möglich ist die Installation etwa in VMware Fusion, das die beiden Features auch an Gast-Systeme weiterreicht. Auch in VirtualBox ist die Installation von SmartOS möglich, aber die Performance ist nicht die beste. Schließlich bietet auch Linux mit Nested-KVM zumindest VMX in virtuellen Maschinen an. Allerdings gibt es erst seit Kernel 3.12 auch Support für Nested-EPT, womit sich SmartOS immerhin ohne die entsprechende Fehlermeldung installieren ließ. Allerdings blieb es danach stets beim Start einer KVM-Maschine hängen. Ein eigener Rechner ist also die beste Lösung.

Obwohl es keine Installation gibt, muss man nach dem Booten von CD oder USB ein paar Dinge einrichten, nämlich das Root-Passwort, die Netzwerkeinstellungen und die Storage-Optionen. SmartOS setzt als Storage mindestens eine komplette Festplatte voraus, mit mehreren Festplatten lassen sich im ZFS-Pool auch diverse RAID-Setups realisieren. Schon bei diesem Schritt muss sich der Linux-Anwender etwas umstellen, denn die Devices werden Solaris-typisch benannt: »c0t0d0« , wobei »c0« für den ersten Controller steht, »t0« für den ersten Bus und »d0« für die erste Disk.

Loggt man sich im neuen SmartOS-System ein, landet man in einer Solaris-Umgebung und muss sich mit ein paar neuen Tools vertraut machen. So gibt es beispielsweise das von Linux bekannte »top« nicht, stattdessen aber ein Programm namens »prstat« . Ein praktisches Cheatsheet für Linux-Anwender, das die entsprechenden Befehle in SmartOS aufführt, ist unter [2] zu finden.

Die wenigen Konfigurationsdaten, die SmartOS im ZFS-Dateisystem speichert, sind in »/usbkey/config« zu finden. Die sogenannte Global Zone, in der man sich nach dem Einloggen wiederfindet, ist nicht persistent, sondern auf einer RAM-Disk gespeichert. Das bedeutet insbesondere, dass man keine Benutzer anlegen kann, die nach einem Reboot noch da sind, ebenso auch keine Dateien in den Verzeichnissen »/etc« , »/root« und »/usr« . Allerdings befindet sich »/opt« (und auch »/var« ) im ZFS und kann deshalb zum Speichern von Dateien verwendet werden.

Wer will, kann sogar den Paketmanager »pkgin« dort installieren und dann nach Herzenslust Software einspielen. Für den Paketmanager gibt es ein fertiges Tar-Paket, das man nur herunterladen und entpacken muss:

cd /
curl -k http://pkgsrc.joyent.com/packages/SmartOS/bootstrap/bootstrap-2013Q3-x86_64.tar.gz | gzcat | tar-xf -

Danach gilt es mit »pkg_admin rebuild« die Paketdatenbank zu erneuern und mit »pkgin -y up« zu aktualisieren. Jetzt steht das Programm »pkgin« zur Verfügung, das nach Paketen suchen, sie installieren und wieder deinstallieren kann. Alle Pakete landen unterhalb des Verzeichnisses »/opt/local« und sind auch nach einem Reboot noch da.

Auch Services dauerhaft einzurichten, ist über das »/opt« -Verzeichnis möglich. Die Service Management Facility (SMF), die bei Solaris und SmartOS die Verwaltung von Diensten übernimmt, sieht beim Booten auch im Verzeichnis »/opt/custom/smf« nach, wo man also die Konfigurationsdateien für eigene Services ablegen kann.

Images besorgen

Virtuelle Maschinen verwalten zwei einfache Befehle. »imgadm« verwaltet die Images, auf denen die virtuellen Maschinen basieren, die der SmartOS-Administrator mit »vmadm« installiert. Dazu gibt es ein lokales Verzeichnis von VM-Templates, das »imgadm list« anzeigt. Anfangs gibt es hier noch nichts zu sehen, bevor nicht wenigstens ein Template importiert ist.

Per Default ist »imgadm« so konfiguriert, dass es auf den Image-Server zurückgreift, der unter »https://images.joyent.com« zu finden ist, wie »imgadm sources« verrät. Neue Server lassen sich ebenfalls mit diesem Kommando hinzufügen. Welche Images bei Joyent zu finden sind, ist mit »imgadm avail« zu erfahren. »imgadm update« bringt die Liste auf den laufenden Stand. In den lokalen Image Store importiert »imgadm import UUID« ein Image. Grundsätzlich gibt es zwei Typen von Images: »smartos« für Solaris Zones (im SmartOS-Jargon "Joyent-Brand") und KVM-Images, von denen das Joyent-Repository derzeit »linux« und »bsd« anbietet.

Wie in Abbildung 2 zu sehen ist, verwendet SmartOS zur Identifizierung von Images – wie auch virtueller Maschinen – recht unübersichtliche Hashes, die für die manuelle Administration oft umständlich erscheinen, aber immerhin mit Copy-and-Paste zu bewältigen sind.

Abbildung 2: Die verfügbaren Templates für virtuelle Maschinen lassen sich in den lokalen Store importieren.

Ist ein VM-Template importiert, kann man sich an das Erzeugen einer virtuellen Maschine machen. Dazu braucht man neben dem Template noch eine Spezifikation der virtuellen Maschine, die im JSON-Format abgefasst ist und im Wesentlichen die virtuelle Hardware der VM bestimmt, also Disks, Netzwerkkarten und so weiter.

Ein Beispiel einer solchen Spezifikation ist in Listing 1 zu sehen. Der Eintrag »brand« legt den Virtualisierungstyp fest. Im Beispiel ist es »kvm« , für Zones lautet der Eintrag »joyent« . Ein »alias« ist praktisch, denn sonst findet man die Maschine später nur schwer wieder. Bei den Modellen der Disk-Hardware gibt es alternativ zu Virtio auch die Standards IDE und SCSI, aber Virtio gilt für Linux als die beste Lösung. Auch für virtuelle Windows-Maschinen kann man diese Option einsetzen, braucht aber dann passende Treiber, insbesondere bei der Installation. Das Gleiche gilt für die Netzwerkkarte, für die alternativ zu Virtio auch Emulationen gängiger Ethernet-Hardware existieren.

Listing 1

vmspec.json

 

Der springende Punkt ist schließlich, im Disks-Abschnitt die »image_uuid« einzutragen, die derjenigen des importierten Templates entsprechen muss. Mit dieser Konfiguration erzeugt ein Aufruf von »vmadm create -f vmspec.json« eine neue virtuelle Maschine, deren (neue) UUID der Befehl ausgibt – wenn alles klappt. Der Befehl »vmadm list« zeigt in der Liste die jetzt laufende Maschine an (Abbildung 3). Eine Übersicht aller in den JSON-Konfigurationsdateien verfügbaren Optionen ist unter [3] zu finden.

Abbildung 3: vmadm list zeigt die installierten virtuellen Maschinen an.

Einige Konfigurationsvariablen lassen sich auch zur Laufzeit mit »vmadm« ändern. Beispielsweise ändert »vmadm update alias=Name« den Alias der virtuellen Maschine. Alternativ liest der Befehl auch JSON-Abschnitte ein und aktualisiert damit die Konfiguration. So kann man beispielsweise auch eigene Metadaten in die Konfiguration integrieren. Listing 2 zeigt entsprechende JSON-Daten und wie man sie in die Konfiguration einliest.

Listing 2

meta.json

 

Sich auf der virtuellen Maschine einzuloggen, ist beispielsweise mit einem Aufruf von »vmadm console VM-UUID« möglich. Allerdings muss das Gastsystem dann so konfiguriert sein, dass auf der ersten seriellen Schnittstelle ein Getty-Prozess auf ein Login wartet.

Alternativ bietet SmartOS für jede VM einen Remotedesktop-Zugang per VNC, dessen Port automatisch vergeben wird. Um herauszufinden, welchen Port die aktuelle Maschine verwendet, kennt »vmadm« den Befehl »info« , in dem auch die VNC-Konfiguration verborgen ist (Abbildung 4).

Abbildung 4: Mit einem Aufruf von vmadm info lässt sich der VNC-Port einer virtuellen Maschine herausfinden.

Ä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