VMware Photon OS Container mit Foreman bzw. Red Hat Satellite 6 steuern

Photon OS ist eine minimalistische, RPM-basierende Linux-Distribution, deren einziger Nutzen das Ausführen von Docker-Containern ist. Es wurde für speziell für VMware Plattformen (Workstation, Fusion, vSphere, vCloud Air) optimiert - so verfügt es beispielsweise über ein für vSphere optimiertes Caching innerhalb des Linux-Kernels.

Eine weitere Eigenschaft ist der eigens entwickelte Paket-Manager tdnf (Tiny Dandified YUM), der YUM stark ähnelt, aber auch OSTree-Inhalte (git-ähnlich versionierte, bootbare Dateisystem-Inhalte) verwalten kann.

Foreman bzw. Red Hat Satellite 6 verfügen über Docker-Support. Somit lassen sich Docker-Container zentral erstellen und verwalten. Dieser Artikel beschreibt das Kombinieren beider Produkte.

Konfiguration von Photon OS

VMware Photon OS

Beim Erstellen der Photon OS-VM habe ich die folgenden Einstellungen übernommen:

  • Familie des Gastbetriebssystems: Linux
  • Version des Gastbetriebssystems: VMware Photon OS (64-Bit)

Alternativ gibt es auf der Projekt-Webseite auch vorgefertigte OVA-Vorlagen zum Download.

Nach der Provisionierung der VM empfiehlt sich ein Aktualisieren und Neustarten des Systems:

1# tdnf update
2# systemctl reboot

Standardmäßig konfiguriert Photon OS per DHCP IP-Informationen. Soll eine statische IP-Adresse verwendet werden, muss eine systemd-Konfiguration erstellt werden:

 1# ip a
 2# vi /etc/systemd/network/10-static-eth0.network
 3[Match]
 4Name=eth0
 5
 6[Network]
 7Address=192.168.1.100/24
 8Gateway=192.168.1.1
 9DNS=192.168.1.1
10
11ESC ZZ

Damit diese Konfiguration auch übernommen wird, werden entsprechende Datei-Berechtigungen gesetzt und der dazugehörige Netzwerk-Dienst neugestartet:

1# chmod 0644 /etc/systemd/network/10-static-eth0.network
2# systemctl restart systemd-networkd

Der Docker-Dienst lauscht standardmäßig nur auf localhost. Sollen remote Container verwaltet werden können, muss die Konfigurationsdatei /etc/default/docker erstellt und mit folgender Zeile befüllt werden:

1# vi /etc/default/docker
2DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

Die Zeile sorgt dafür, dass Docker auf auf dem TCP-Port 2375 lauscht. Je nach Belieben kann auch ein anderer Port verwendet werden.

Standardmäßig wird Docker nicht automatisch beim Booten gestartet. Die folgende Zeile startet Docker und sorgt dafür, dass der Dienst auch beim Booten automatisch gestartet wird:

1# systemctl enable docker ; systemctl start docker

Damit der Fernzugriff auch funktioniert, muss der definierte Port in der Firewall geöffnet werden:

1# iptables -A INPUT -p tcp --dport 2375 -j ACCEPT

Beim Booten wird diese Anpassung jedoch verworfen - es bedarf also zweier Zeilen in der Konfigurationsdatei /etc/systemd/scripts/iptables:

1# vi /etc/systemd/scripts/iptables
2...
3#Enable docker connections
4iptables -A INPUT -p tcp --dport 2375 -j ACCEPT
5# End /etc/systemd/scripts/iptables

Konfiguration von Foreman

Der nächste Schritt ist die Verknüpfung von Photon OS und Foreman. Dank integriertem Docker-Plugin (foreman-docker) ist Foreman in der Lage, auf Docker-Container zuzugreifen, bzw. diese zu steuern.

Mit Klicks auf Infrastructure > Compute resources > New Compute Resource wird ein Assistent gestartet. Im sich öffnenden Dialog werden die folgenden Informationen hinterlegt:

  • Name: VMware Photon OS
  • Provider: Docker
  • Description: Kurzbeschreibung, z. B. FQDN
  • URL: http://fqdn:2375

Ein Klick auf Test Connection sollte den erfolgreichen Verbindungsaufbau bestätigen. In den Registerkarten Locations und Organizations kann das System bestimmten Orten oder Organisationen zugewiesen werden.

Anschließend wird Photon OS unterhalb Infrastructure > Compute resources aufgelistet. Mit Klicks auf den entsprechenden Eintrag in der Liste und Containers werden definierte Container aufgelistet:

Übersicht definierter Docker-Container

Erstellen eines Containers

Foreman ist auch in der Lage Container zu erstellen. Dabei werden die folgenden Quellen für Docker-Images unterstützt:

  • Content Views
  • Docker Hub
  • eigene/externe Registry

Klicks auf Container > New container starten einen Assistenten. Im folgenden Beispiel wird ein CentOS 7-Container erstellt, der Pings auf centos.org ausführt:

Der Assistent wird wie folgt ausgefüllt:

  • Prelimary
    • Compute resource
      • Deploy on: VMware Photon OS
  • Image
    • Docker hub
      • Search: centos
      • Tag: latest
  • Configuration
    • Name: centos-ping
    • Command: ping centos.org
  • Environment
    • Run: Ja

Anschließend wird der Container in der Übersicht unter Container > All containers aufgelistet. Mit einem Klick auf den entsprechenden Eintrag werden Laufzeit-Informationen aufgelistet. In der Registerkarte Logs können Konsolen-Ausgaben eingesehen werden:

Aktiver Docker-Container innerhalb Foreman

Mit einem Klick auf Commit können Änderungen des Containers in einem neuen Image gespeichert werden. Um den Container zu stoppen, genügt ein Klick auf Power Off.

Übersetzungen: