nw  

Automatisierte Test Deployments

Zusammenfassung

Automatisertes Deployment der Testumgebung für Entwicklerteams

Schlüsselbegriffe

Terraform, Ansible, OpenStack, GitOps

Zielsetzung

Das Ziel dieses Projektes ist die Automatisierung des Setups einer neuen Test-Umgebung, welche von einem Studierendenprojekt für die Dauer des Projekts genutzt werden kann. Es sollen keine manuellen Schritte mehr nötig sein. Dazu gehört auch, dass die Umgebung nach Ende des Projekts möglichst einfach wieder abgebaut werden kann und alle erstellten Ressourcen wieder freigegeben werden. Die Automatisierung soll die Konzepte von GitOps und Infrastructure-as-Code (IaC) einsetzen, um eine Umgebung bei einem Hyperscaler hochzufahren. In einem ersten Schritt werden die Studierenden-Umgebung auf Switch-Engines (Openstack basiert) automatisiert, und die Dokumentationen zum Setup einer Test-Umgebung vervollständigt. Später kann das IaC Setup mit einem Public Cloud-Provider (AWS oder Azure) erweitert werden.

Ausgangslage

Die Software aWall besteht aus mehreren Komponenten welche als containerisierten Services zur Verfügung gestellt werden. Diese Container werden sowohl zur Entwicklung auf den Geräten der Entwickler wie auch zum Betrieb der Applikation auf Switch Engines und Kubernetes Cluster eingesetzt. Da die Weiterentwicklung der Applikation häufig in parallellaufenden Feature-Projekten geschieht, muss jedes Entwicklungsteam in der Lage sein ihre eigene Test-Umgebung zu betreiben, um den aktuellen Stand der Entwicklung aufzeigen zu können. Da für diese Test-Umgebungen nicht die gleichen Anforderungen in Bezug auf Verfügbarkeit und Performanz haben, als die PaaS Umgebungen welche für Kunden betrieben werden, wird hierbei nicht auf Kubernetes gesetzt, sondern mit Switch-Engines eine kostengünstigere Lösung verwendet. Auf den Switch-Engines werden die Umgebungen aktuell mit docker-compose aufgesetzt.

Ergebnisse

Die Test-Umgebungen werden nun voll automatisiert ausgerollt. Dazu gehören die virtuellen Maschinen auf SwitchEngines, die notwendigen DNS-Records für die aWall-Testumgebung sowie die Anbindung zum Atlassian Login mit oAuth.

Auf basis zweier GitLab Pipelines, werden zuerst Virtualle-Maschinen mit Terraform auf SwitchEngines aufgesetzt, sowie DNS Records in der Azure Cloud erstellt.
Zusätzlich wird für jedes Studierendenprojekt ein eigenes GitLab Projekt erstellt, welches die Git Repositorys für die Applikationen enthält.

Die Terraform Pipeline stosst zum Schluss eine Ansible Pipeline an, welche die aWall Applikationen auf den erstellten VMs mithilfe von Docker Compose konfiguriert und startet.
Damit die Studierenden immer die neuste Version ihres Entwicklungsstands sehen, wird in einem Cronjob die neuen Container-Images gepulled, und gestartet.

Projektdaten

Kickoff: 16.August 2023
Projektabgabe: 22.März 2024
Aufwand: 360h
Teamgrösse: 2 Personen

Auftraggeber

Martin Kropp (FHNW), www.fhnw.ch

Projektteam

Mathias Petermann, Mike Gilgen

Kontakt

Sebastian Graf, sebastian.graf@fhnw.ch

<< zurück