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
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:
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
- Compute resource
- Image
- Docker hub
- Search: centos
- Tag: latest
- Docker hub
- 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:
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.