Clouds kennenlernen mit AWS-Planspiel

Im ProXLab wurde im Wintersemester 2021/2022 ein Planspiel als extracurricularer Kurs konzipiert und mehrfach mit durchgeführt, um Studierenden das Thema Cloud mit AWS näher zu bringen. Der Kurs wurde von einem regionalen Partnerunternehmen für das ProXLab entwickelt.

Hintergrund und Zielsetzung

Motiviert wird das Spiel durch die Relevanz der Technologie und der oft nicht vorhandenen Vermittlungs- und Bildungsangeboten, um diese Technologie kennenzulernen. Das Spiel wurde so konzipiert, dass es jede*n Interessierte*n durch die Erstellung einer cloudbasierten Lieferpipeline ermöglicht, eine Webanwendung bereitzustellen. Das Ziel besteht in der theoretischen Vermittlung von dem Grundverständnis der Cloud-Technologie mittels Vorlesung und ihrer praktischen Anwendung anhand einer eigens erstellten Lieferpipeline. Mit diesem Verständnis sollen sich Neugier und der Wille zur weiteren Auseinandersetzung mit dem Thema ergeben.

Empfohlener Rahmen

Das Kurs kann mit beliebig vielen Personen gespielt werden. Es ist aber darauf zu achten, dass alle Teilnehmenden folgen können und bei Bedarf auf sie eingegangen werden kann. Eine Gruppengröße von über 15 wurde nicht erprobt. Im ersten Teil des Workshops wird das Thema anhand einer theoretischen Einführung eingeführt. Für die Durchführung der praktischen Übung ist am besten der folgenden Durchführungsanleitung zu folgen.

Bezug zum Coaching

Die Teilnehmenden erhalten eine praxisorientierte Einführung, um sich selbstständig mit diesem für Sie neuen Thema auseinanderzusetzen. Der Spielleiter fungiert als Coach und leitet die Teilnehmenden sowohl durch die theoretische Einführung als auch die praktische Übung. Dabei nimmt der Spielleiter gleichermaßen Rücksicht auf alle Teilnehmenden und sorgt für eine an die Gruppe angepasste Wissensvermittlung.

Step-by-Step:

Git-Repo einrichten

  1. Über https://github.com/ GitHub öffnen und sich mit seinen Account-Daten anmelden.
  2. Anschließend das Repository: https://github.com/aws-samples/aws-elastic-beanstalk-express-js-sample in der Suchleiste suchen und oben rechts auf „Fork“/“Abzweigen“ klicken, um das Repository mit der Beispiel Anwendung ins eigene Repository abzuzweigen, danach eigenes Konto öffnen und das abgezweigte Repository auswählen.
  3. Im eigenen Repository auf grünen Button „Code“ und über HTTPS klonen/ URL in Zwischenablage kopieren
  • Nun wird das Terminal geöffnet, in dem bei der Windows-Suche „cmd“ eingegeben wird und anschließend die App für die Konsoleneingabe gestartet wird.
  • Im Terminal wird durch den Befehl:

„git clone https://github.com/YOUR-USERNAME/aws-elastic-beanstalk-express-js-sample (Git-Benutzername für YOUR-Username einsetzen) das Repository geklont und ein lokaler Ordner mit den Inhalten des Repositorys angelegt.

  • Ordner öffnen und app.js im Code-Editor öffnen.
  • Nachricht in Zeile 5 ändern und speichern.
  • Im Terminal über den Befehl „cd aws-elastic-beanstalk-express-js-sample“ in Ordner des Repositorys navigieren
  • Im Terminal durch den Befehl: „git add app.js“ die aktualisierte Datei hinzufügen
  • Durch den Befehl: „git commit -m „change message““ Änderung an Master-Branch commiten
  • Durch den Befehl: „git push“  die Änderungen zu veröffentlichen und an das GitHub-Repository senden
  • im eigenen Repository auf GitHub prüfen ob Änderungen aktualisiert wurden

Webanwendung bereitstellen

AWS Elastic Beanstalk: Service zur Anwendungsbereitstellung. Kreiert Anwendungsumgebung in der über EC2-Instancen (virtuelle Server) die Anwendung gehostet wird.

  1. Elastic Beanstalk in AWS-Konsole aufrufen und auf orangene Schaltfläche „Anwendung erstellen“ klicken
  2. Name der Anwendung eingeben Bsp. „DevOpsGettingStarted“
  3. Unter „Plattform“ Node.js auswählen, prüfen, dass „Plattform-Zweig“ und „Plattform-Version“ ausgefüllt sind bzw. auf Standard lassen und prüfen, ob „Beispielanwendung“ ausgewählt ist, danach „Anwendung erstellen“. Dies kann einige Minuten dauern.
  4. Zum testen Link mit Namen der Umgebung klicken, anschließend  sollte Gratulations-Website erscheinen.

Build-Projekt erstellen

Build-Prozess: Konvertiert Quellcode-Dateien in ausführbares Software-Artefakt. Kompilieren des Quellcodes, Ausführen von Tests und Paketierung der Software zur Bereitstellung.

Buildspec: Sammlung von Build-Befehlen im YAML-Format für CodeBuild.

OAuth: Offenes Protokoll für sichere Autorisierung und Verbindung vom GitHub-konto mit CodeBuild

  1. „CodeBuild“ über AWS-konsole öffnen und „Projekt erstellen“ klicken
  2. Projektname = „Build-DevOpsGettingStarted“ und Quellanbieter „GitHub“ asuwählen
  3. „Verbinden über OAuth“ auswählen dann „mit GitHub verbinden“ und anmelden
  4. „Repository in meinem GitHub-Konto“ auswählen und „aws-elastic-…“ suchen
  5. Bestätigen, dass „Verwaltetes Image ausgewählt ist“, „Amazon Linux 2“ als Betriebssystem, „Standard“ bei Laufzeit, „aws/codebuild/amazonlinux2-x86_64-standard:3.0“ bei Image, „Immer das neueste Image für diese Laufzeitversion verwenden“ bei image-Version, „Linux“ bei Umgebungstyp und „Neue Service-Rolle“ ausgewählt ist.
  6. „Build-Befehle einfügen“ auswählen und anschließend „Zum Editor wechseln“ klicken
  7. In Buildspec-Datei unter commands: „- npm i – -save“ einfügen und unter files:           „- ‚**/*’“ einfügen (vorher # entfernen) danach Build-Projekt erstellen
  • Zum Testen „Build starten“ klicken, GitHub-Repository prüfen und „Build starten“ klicken, nach ein paar Minuten sollte ein grüner Haken und eine Erfolgs-Meldung erscheinen.

Lieferpipeline erstellen

Kontinuierliche Lieferung: Praxis bei der Softwarebereitstellung, die es Entwicklern ermöglicht, Software schneller freizugeben, indem sie die Build-, Test- und Bereitstellungsprozesse automatisieren.

Pipeline: Beschreibt, wie Software-Änderungen den Freigabeprozess durchlaufen, besteht aus Reihe von Stufen, welche wiederum aus Aktionen bestehen.

  1. „CodePipeline“ über AWS-Konsole öffnen und „Pipeline erstellen“ klicken, Name „Pipeline-DevOpsGettingStareted“ eingeben und bestätigen, dass „Neue Service-Rolle“ ausgewählt ist, danach auf „weiter“ klicken
  2. „GitHub“ als Quellanbieter auswählen und „mit GitHub verbinden“ auswählen, danach auf grüne Schaltfläche „aws-codesuite autorisieren“ klicken
  3. Unter „Repository“ das Repository aus 1 auswählen und „Haupt“/“master“ als branch/ Abzweigung auswählen. Bestätigen, dass „GitHub Webhooks ausgewählt ist“, danach auf „weiter“.
  4. Bei „Build-Anbieter“ „AWS Codebuild“ auswählen und „USA West (Oregon)“ auswählen. „Projektname“ ist „Build-DevOpsgettingStarted“, danach auf „Weiter“
  5. Bei „Bereitstellungsanbieter“ „AWS ElasticBeanstalk“ auswählen und Region „USA West (Oregon)“auswählen. „Anwendungsname“ ist „DevOpsGettingStarted“ und „Umgebungsname“ ist „DevOpsGettingStarted-env“, danach auf „Weiter“ und „Pipeline erstellen“.
  6. Sobald Pipeline durchgelaufen ist und „Bereitstellung“ auf grün gesprungen ist auf „AWS Elastic Beanstalk“ klicken, um ElasticBeanstalk-Umgebung zu öffnen.
  7. URL in der Zeile „Devopsgettingstarted-env“ klicken, um in neuer Registerkarte die Anwendung mit den Änderungen zu sehen.

Pipeline und Test abschließen

Überprüfungsphase hinzufügen:

  1. „CodePipeline“ über AWS-Konsole öffnen.
  2. Hier die zuvor erstellte Pipeline auswählen anschließend auf „Bearbeiten“ klicken.
  3. Auf die weiße Schaltfläche „Stufe hinzufügen“ zwischen „Build“ und „Bereitstellung“ klicken und im Feld „Stufenname“ den Typ „Überprüfen“ eingeben und auf orangene Schaltfläche „Stufe hinzufügen“ klicken
  4. Anschließend in der Phase „Überprüfen“ auf die weiße Schaltfläche „Aktionsgruppe hinzufügen“ klicken
  5. Unter „Name der“ der Aktion „Manual Review“ eingeben und unter „Aktionsanbieter“ die Option „Manuelle Genehmigung“ auswählen.
  6. Die optionalen Felder können leer gelassen werden. Anschließend auf „Fertig“ klicken und oben auf die orangene Schaltfläche „Speichern“. Die Pipeline sollte nun aus den vier Stufen: „Beschaffung“, „Build“, „Überprüfung“ und „Bereitstellung“ bestehen.

Pipelinetest durch Commit einer Code-Änderung:

  1. „app.js“ im Code-Editor öffnen und Nachricht in Zeile 5 ändern, anschließend speichern
  2. Terminal öffnen und über „cd aws-elastic-beanstalk-express-js-sample“ in Ordner des Repositorys navigieren
  3. Folgende Befehle zur Bereitstellung der Änderung und anstoßen der Code-Pipeline ausführen:

„git add app.js“

„git commit -m “Full pipeline test““

„git push“

  • „CodePipeline“ über AWS-Konsole öffnen und die zuvor erstellte Pipeline auswählen, dabei sollten die Stufen „Beschaffung“ und „Build“ durchlaufen
  • Wenn die Schaltfläche „Überprüfen“ auf blau wechselt, auf die weiße Schaltfläche „Überprüfen“ klicken und einen Genehmigungskommentar in das textfeld schreiben, anschließend auf „Genehmigen“ klicken und warten bis die Stufen „Überprüfen“ und „Bereitstellen“ auf grün wechseln
  • Anschließend auf den AWS Elastic Beanstalk-Link klicken, es sollte sich eine neue Registerkarte mit der Liste der Elastic-Beanstalk-Umgebungen öffnen
  • Auf die URL in der Zeile „Devopsgettingstarted-env“ klicken, es sollte sich eine Website mit dem Text der letzten Änderung öffnen

Bereinigen der Ressourcen

Elastic Beanstalk:

  1. „Elastic Beanstalk“ über AWS-Konsole öffnen
  2. Im linken Navigationsmenü auf „Anwendungen“ klicken und „DevOpsGettingStarted“ auswählen und über die Dropdown-Schaltfläche „Aktionen“ das Feld „Anwendung löschen“ auswählen
  3. Im Textfeld „DevOpsGettingStarted“ eingeben, um Löschung zu bestätigen, anschließend orangene Schaltfläche „Löschen“ klicken

CodePipeline:

  1. „CodePipeline“ über AWS-Konsole aufrufen und „pipeline-DevOpsGettingStarted“ auswählen
  2. Oben auf der Seite auf die weiße Schaltfläche „Pipeline löschen“ klicken und „löschen“ im Textfeld eingeben, um Löschung zu bestätigen, anschließend auf orangene Schaltfläche „Löschen“ klicken

Pipeline-Ressourcen aus S3-Bucket:

  1. „S3“ über AWS-Konsole öffnen und den Bucket mit der AWS-Kontonummer auswählen. In diesem Bucket sollte sich ein Ordner mit dem Namen „Pipeline-DevOpsGettingStarted“ befinden.
  2. Kontrollkästchen neben dem Ordner „Pipeline-DevOpsGettingStarted“ aktivieren und unter „Aktionen“ aus dem Dropdown-Menü „Löschen“ auswählen und auf die blaue Schaltfläche „Löschen“ klicken.

CodeBuild:

  1. „CodeBuild“ über die AWS-konsole auswählen.
  2. In der linken Navigation unter „Build“ auf „Build-Projekte“ klicken. Es sollte das Build-Projekt „Build-DevOpsGettingStarted“ unter „Build-Projekt“ aufgelistet sein.
  3. Das Optionsfeld neben „Build-DevOpsGettingStarted“ auswählen und oben auf der Seite die weiße Schaltfläche „Build-Projekt löschen“ anklicken.
  4. „löschen“ in das Textfeld eingeben, um die Löschung zu bestätigen, anschließend auf die orangene Schaltfläche „Löschen“ klicken.

Schreibe einen Kommentar