Die Möglichkeit Code zentral abzulegen, zu überprüfen, zusammenzuführen sowie automatisiert mittels CI/CD bereitzustellen, ist für die tägliche Arbeit als System Engineer im Bereich der Automatisierung unverzichtbar. In diesem Beitrag wird exemplarisch aufgezeigt, welchen Vorteil eine SaaS Lösung im Bereich Source Code Management bietet, wie die automatisierte Bereitstellung von Code aus der Cloud auf On-Premises Systeme stattfindet und welche Komponenten dazu benötig werden.
Die Bereitstellung von Code aus der Cloud anhand eines Beispiels
Ein Engineer aktualisiert einen Teil unseres Ansible-Codes, welcher auf einem GitHub Repository in der Cloud liegt. Der Runner sowie die Ansible Automation Plattform laufen als virtuelle Server im On-Prem Rechenzentrum. Wie kommt nun der Code aus dem GitHub Repository in der Cloud auf das On-Prem Zielsystem?

- Ein Engineer aktualisiert einen Tiel des Codes und lädt diesen in SCM-Lösung hoch.
- Es wird eine CI/CD Pipeline gestartet.
- Der Code wird innerhalb dieser CI/CD Pipeline auf Syntaxfehler überprüft.
- Auf dem SCM Runner wird ein Kommando ausgeführt, welches das Zielsystem die Ansible Automation Platform dazu auffordert, den neuen Code von der SCM-SaaS-Lösung zu beziehen.
Welche Komponenten werden für die Bereitstellung von Code aus der Cloud benötigt?
- Eine Source Code Management (SCM) Lösung als SaaS (Software as a Service)
Auf dem Markt gibt es mehrere SCM-Lösungen. Die am weitesten verbreitet und bekanntesten sind sicherlich GitLab und GitHub. Beide Produkte sind aus der Cloud als SaaS sowie als On-Prem Varianten verfügbar. Welche Lösung präferiert wird, liegt in der Präferenz der Engineers oder wird allenfalls durch die Organisation vorgegeben. - Selbst gehostete Runners
Runners sind Server auf welchen die Aktionen, welche in den CI/CD Pipelines definiert sind, ausgeführt werden. Eine der am häufigsten verwendeten Aktionen ist das Prüfen des hochgeladenen Codes auf Syntaxfehler. Selbst gehostete Runners bieten die Möglichkeit zu entscheiden, ob sie On-Prem oder in der Cloud betrieben werden. Zudem steht dabei offen, bei welchem Cloud-Anbieter sie betrieben werden. Die Bereitstellung findet via Softwarepaket auf einen vorhandenen virtuellen Server statt. - Ein (On-Premises) Zielsystem
Auf dem Zielsystem wird eine bestimmte Aktion, wie beispielsweise «Code aktualisieren», ausgeführt. Der eigentliche Befehl, um diese Aktion auf dem Zielsystem anzuwenden, wird auf dem Runner gegen das Zielsystem ausgeführt. Ein Zielsystem muss nicht zwingend im On-Prem Rechenzentrum laufen, es kann auch in der Cloud bei einem beliebigen Cloud-Anbieter sein.
Was ist eine SCM-Lösung?
In ein SCM laden Engineers und Entwickler ihren Code hoch, um diesen zentral abzulegen sowie nachvollziehen zu können, wer wann welchen Teil vom Code geschrieben oder angepasst hat. Doch ein SCM ist nicht nur ein einfacher Code-Speicher mit eingebauter Code-Versionierung. Ein SCM bietet noch viele weitere Funktionen. Eine der zentralen Funktionen ist die Möglichkeit den hochgeladenen Code mittels CI/CD Pipelines (continuous integration und continuous delivery) automatisiert bereitzustellen.
Was ist eine CI/CD (continuous integration und continuous delivery) Pipeline?
Eine CI/CD Pipeline kann als sequenzielle oder parallele Abfolge von mehreren Aufgaben auf eine bestimmte Aktion innerhalb des SCM betrachtet werden. Für die Ausführung der Aktionen aus der Pipeline wird bei allen SCM-Lösungen ein Runner benötigt. Die Aufgaben, welche mittels CI/CD ausgeführt werden, werden in den verschiedenen SCM-Lösungen unterschiedlich bezeichnet und unterscheiden sich in ihrer Konfiguration.
Im Zusammenhang mit dem SCM können das beispielsweise folgende Aufgaben sein:
- Hochgeladener Code auf Syntaxfehler überprüfen
- Hochgeladener Code auf mögliche Sicherheitsprobleme überprüfen
- Hochgeladener Code auf Zielsysteme bereitstellen (beispielsweise via API-Aufruf oder via Kommando auf dem Zielsystem)
Fazit
Steht die zentrale SCM-Lösung als SaaS bereit, ist das Mittel für den hybriden Cloud Ansatz geschaffen. Die Möglichkeit CI/CD Runners im On-Premises Rechenzentrum bereitzustellen, macht die Verwaltung der On-Premises Infrastruktur aus der Cloud erst möglich. Wo der Code liegt, ist nicht mehr relevant, da der Weg definiert ist, wie dieser auf die lokalen Systeme kommt und bereitgestellt wird. Die SCM-Anbieter machen es leicht ihre Produkte zu verwenden und bieten viele vorgefertigte Lösungen für bekannte Herausforderungen.