CI-in-a-Box

Eine Plattform zum Entwickeln von Pipelines mit Hardware

Prämisse

Im Bereich der Embedded Systems Software werden robuste und sichere Applikationen immer wichtiger. Probleme und unabsichtliche Fehler in Implementierungen führen oft zu Sicherheitsproblemen wie Memory Leaks, Instabilitäten oder Pufferüberläufen, die die generelle Memory Safety beeinträchtigen.

Um diesem Problem zu helfen, müssen automatisierte Tests und Tools wie CI/CD Pipelines eingesetzt werden. Hierbei ist auch die Einbindung der Embedded Hardware von Interesse, da Tests auf der Target-Plattform oft mühselig und kompliziert sind.

Das Projekt Höhere IT-Sicherheit durch Sichere Software Entwicklung (HITSSSE) unterstützt KMUs unter anderem dabei, die Entwicklung von Pipelines und sicherer Software einfacher und zugänglicher zu machen.

Ziele

Konkret wollen wir den Softwareentwickler:innen eine Plattform zum Kennenlernen, Ausprobieren und Entwickeln von Pipelines. Hierbei soll eine sichere Umgebung geschaffen werden, in der automatisiertes Testen mit CI/CD Pipelines erprobt werden kann, insbesondere das Einbinden von Embedded Hardware Komponenten.

Schutz der eigenen Infrastruktur

Oft kann es passieren, dass bei Versuchen mit Pipeline-Tools die interne Infrastruktur Probleme bekommt und auch bei der Entwicklung stört. Deshalb soll die Plattform eine Spielwiese bieten, auf der keine Probleme mit störender/bestehender Infrastruktur auftreten kann und in der alles gekapselt läuft.

Einheitliche Umgebungen schaffen

In CI/CD Pipelines müssen oft die Umgebungen abgebildet werden, in denen die entsprechende Software entwickelt wird. Hierbei kann es oft zu Konfigurationsproblemen kommen und Diskrepanzen in den technischen Möglichkeiten, vor allem wenn die Embedded Hardware ins Spiel kommt. Hier sind Entwicklungs- und vor allem auch Testumgebungen sehr speziell und oft auch rein manuell.

Hier wollen wir mit der CI-in-a-Box Plattform Abhilfe bieten, um einheitliche Umgebungen entwickeln und Softwareentwickler:innen die bisherigen manuellen Hardwaretests in die Pipelines integrieren zu können. Dies ist oftmals aufwändig und kann Probleme in bestehenden Infrastrukturen und Umgebungen erzeugen, weshalb die Plattform hier verwendet werden kann, ohne dass etwas bestehendes kaputt geht.

Aktueller Stand und Tools

Um diese Ideen und Ziele anzugehen, arbeiten wir an verschiedenen Bereichen:

  1. Aufbau der Plattform selbst
  2. Die Infrastruktur
  3. Beispiel Repositories/Projekte/Umgebungen

Aufbau der Plattform

Die Plattform selbst ist auf kompakten und mobilen Gebrauch ausgelegt, damit es dort eingesetzt werden kann, wo es gebraucht wird. Hierbei wurde auf Flexibilität geachtet, was im Aufbau der Infrastruktur noch einmal genauer gezeigt wird.

Die verwendete Hardware wird in einem mobilen Thomann Triple Door Rack verbaut, da dies den Aufbau bewegbar macht. Es werden zwei Xeon E-2276G Server verbaut, um die Möglichkeit zu bieten, sowohl eine Infrastruktur mit mehreren physischen Servern zu simulieren als auch Virtualisierung auf den Servern selbst zu verwenden. Es gibt einen Managed L2 Switch, um VLAN-Netzwerke möglich zu machen und somit Umgebungen mit getrennten, virtuellen Netzwerken abbilden zu können. Es wird ein Router mit OPNsense verwendet, um die Plattform gekapselt laufen lassen zu können.

Des Weiteren wird verschiedene Embedded Hardware verwendet, um die Einbindung ausprobieren zu können. Dies ist aber für den Grundaufbau nicht notwendig.

Infrastruktur der Pipeline

Bei der Infrastruktur wird Wert auf Flexibilität, Reproduzierbarkeit und Robustheit gelegt. Die Infrastruktur selbst ist mit einem Klick installierbar, da sie komplett mit Tools wie Ansible und Terraform automatisiert und konfigurierbar ist.

Die OPNsense wird vorgeschaltet, damit die Plattform ein eigenes Netzwerk bekommt, dass optional als Subnetz in ein lokales Netzwerk eingebunden werden kann. Hierbei sind VPN-Zugänge auf die Plattform vorbereitet, damit man von dem externen Netz sich auf die Plattform verbinden kann. Des Weiteren wird ein interner DNS verwendet, der den verschiedenen Instanzen statische IPs und lokale Domains vergibt, um die Interfaces besser und einfacher erreichbar zu machen.

Die Server selbst sind mit Proxmox versehen, um VMs für die verschiedenen verwendeten Instanzen möglich zu machen. Auf den VMs laufen jeweils GitLab, Jenkins, GiLab Runner und Jenkins Agents, mit denen die Pipelines aufgesetzt, konfiguriert und getestet werden können. Hierbei sind bereits Standard-User mit Passwörtern versehen, SSH Keys für Runner/Agents generiert und in die verschiedenen Instanzen bereits eingefügt.

All dies ist mit Ansible und Terraform automatisiert und dynamisch installierbar. Dabei werden VMs konfiguriert und aufgesetzt, die verschiedenen Instanzen installiert und konfiguriert, User generiert und mit custom Passwörter versehen und SSH Keys generiert und entsprechend eingehängt. Weiterhin werden in der OPNSense die statischen IPs und lokalen Domains konfiguriert, eine VPN-Konfiguration generiert und der DHCP-Bereich für zusätzliche Hardware gesetzt. Hierbei kann bei Bedarf z.B. die Anzahl der VMs, die generierten User oder die Aufteilung der VMs auf den Servern angepasst werden.

Beispiele auf der Plattform

Um die Plattform verwenden zu können, sollen Beispiel-Projekte bereitgestellt werden, anhand derer die Pipeline und Integrationen gezeigt werden können. Hierbei ist ein Fokus auf Embedded Projekte und Beispiele gelegt. Als Grundbeispiel ist die Dokumentation der Plattform auf derselben automatisiert, um die Dokumente zu generieren.

Um diese Beispiele umzusetzen, werden die zuvor genannte Embedded Hardware verwendet. Hier soll die Hardware in automatisierte Umgebungen in Pipelines eingebunden werden und mit beispielhaften Tests versehen werden.

Ansprechpartner im Projekt:

Philipp Schloyer, E-Mail: philipp.schloyer@hs-augsburg.de