
Release und Patch Management mit SUSE Manager 3
Das SUSE Manager 3 beta Programm ist Ende Dezember 2015 gestartet worden. Diese Gelegenheit wollten wir nutzen, um uns einen ersten Überblick zu verschaffen, was die kommende Version beinhalten wird.
Vorneweg, die wichtigste Änderung ist die Integration von SaltSack als Remote Execution und Configuration Management Framework.
Für diesen Blog Post haben wir uns folgenden Anwendungsfall ausgesucht und ein kurze Anleitung, wie es in der Praxis umgesetzt würde, verfasst.
Szenario
Damit in grösseren IT-Systemlandschaften ein vernünftiges Release und Patch Management durchgeführt werden kann, werden oft identische Systeme in unterschiedlichen Umgebungen (phases oder stages) betrieben. Steht ein neuer Release oder ein Patch zur Verfügung, werden diese zuerst auf den Entwicklungssystemen eingespielt und durchlaufen dann einige Tests und eventuelle Anpassungen, bevor sie auf den produktiven Systemen ausgerollt werden.
Der SUSE Manager liefert für dieses Szenario eine einfache Lösung. Damit einzelne Patches und Pakete von einer Umgebung in die nächste weitergereicht werden können. Zudem ist es möglich einen gesamten Stand oder ein Snapshot eines definierten Zeitpunkts von einer Umgebung in die nächste zu synchronisieren.
Voraussetzungen
Die beschriebenen Konfigurationen setzen voraus, dass ein SUSE Manger 3 installiert und mindestens ein Client System mit SLES11 oder SLES12 als Salt Minion angebunden ist.
Konfiguration
Damit das komplette Setup in der Shell durchgeführt werden kann, müssen die Pakete spacewalk-utils und spacecmd installiert werden.
— — — -
suma3:~ # zypper in –y spacewalk-utils spacecmd
— — — -
Dann lassen wir uns die bestehenden Software Channels anzeigen.
— — — -
suma3:~ # spacewalk-manage-channel-lifecycle \ –u admin –p $PASSWORD –l
— — — -
Zum jetzigen Zeitpunkt ist nur ein Channel zu sehen. Im sogenannte Vendor Channel liegen alle Pakete und Patches die vom SCC heruntergeladen werden.
Also ein Mirror der aktuellsten Paketen von SUSE.
Nun werden die vier Umgebungen (phases) erstellt.
— — — -
suma3:~ # spacewalk-manage-channel-lifecycle \ –u admin –p $PASSWORD \ –channel sles12-sp1-pool-x86_64 –init \ –P devl,test,inte,prod suma3:~ # for PHASE in devl test inte prod ; do > spacewalk-manage-channel-lifecycle \ > –u admin –p $PASSWORD \ > –channel $PHASE-sles12-sp1-pool-x86_64 \ > –promote –P devl,test,inte,prod > done
— — — -
Werden die Umgebungen (phaese) nicht explizit mit –P angegeben, wird als Standard (dev, test, prod) verwendet. Wird der Channel tree jetzt noch einmal mit dem oben genannten Befehl angezeigt, sind die fünf Base Channels zu sehen. Der Vendor– und die vier erstellten Umgebungs-Channels (devl, test, inte, prod).
Damit wir die Konfiguration testen können, weisen wir ein SUSE Manager Client System einer Umgebung zu, in unserem Beispiel der Test-Umgebung.
— — — -
suma3:~ # spacecmd –u admin –p $PASSWORD –y \ system_setbasechannel suma3-client1.example \ test-sles12-sp1-pool-x86_64
— — — -
Auf dem Client System kann mit folgendem Befehl überprüft werden, ob die Zuweisung funktioniert hat.
— — — -
suma3-client1:~ # zypper lr
— — — -
Es erscheinen nur Repositories der zugeteilten Umgebung.
Ab jetzt ist es möglich, über das WebUI oder das CLI einzelne Pakete oder Patches in eine Umgebung zu importieren, oder eine Umgebung mit einer anderen zu synchronisieren.
Hinter den Kulissen
Sobald ein Client System einem Base Channel zugewiesen ist, wird auf dem SUSE Manager, welcher als Salt Master läuft, eine Datei mit den entsprechenden Repositories erstellt.
— — — -
suma3:~ # cd /srv/susemanager/salt/channels ; \ > cat channels.repo.044625baad3d49889f067f14d7cae86f [susemanager:test-sles12-sp1-pool-x86_64] name=test-sles12-sp1-pool-x86_64 enabled=1 autorefresh=1 baseurl=https://suma3.example/rhn/manager/download/test-sles12-sp1-pool-x86_64?eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc4MzU1NDgsImlhdCI6MTQ1NjI5OTU0OCwibmJmIjoxNDU2Mjk5NDI4LCJvcmciOjEsImp0aSI6IlRrYldFQWUwaHZGdzNZUklQQk1aWmcifQ.cmGZyuMU_SJT_fHRmj9X0zP7vM1A2KwWgNRp6m4BDcI […]
— — — -
Das Suffix des Dateinamens entspricht der Salt Minion ID des jeweiligen Client, in unserem Falle der ID von [suma3-client1.example].
Anschliessend führt der SUSE Manager den folgenden Befehl aus, welcher die Datei [/etc/zypp/repos.d/susemanager:channels.repo] auf dem Zielsystem [suma3-client1.example] neu schreibt, falls es Abweichungen zur lokalen Version gibt.
— — — -
suma3:~ # salt ‘suma3-client1.example’ state.apply
— — — -
Interaktion Spacewalk /SaltStack
Spacewalk übergibt dem Salt Master seine Befehle über dessen Rest API, und als Client Library wird die von SUSE entwickelte salt-netapi-client verwendet.
Fazit
Dieses Setup liess sich dank dem Configuration Management von SaltStack sehr einfach durchführen. Im Vergleich zu Vorgängerversionen des SUSE Manager, die als Client Stack rhns verwendeten, war die Konfiguration um einiges schlanker und die Repository-Quellen wurden schneller den Clients zugeteilt.
Die Integration von SaltStack ist eine Bereicherung für den SUSE Manager, welche nicht nur im beschriebenen Anwendungsfall erhebliche Vorteile mit sich bringt.
Weiterführende Informationen aus dem OSS Directory
Adfinis AG
adfinis.com | 80 Mitarbeitende | 12 Referenzen | 87 Produkte
Im Jahr 2000 wurden die beiden Unternehmen Adfinis und SyGroup ins Leben gerufen. Mit der Fusion im 2012 zur heutigen Adfinis SyGroup haben wir uns über die Schweizer Grenzen hinaus zu einem ...
Erstellt: 13.10.2012