[01a]: ./x_res/01_Lab_600.png [01b]: ./x_res/01_Lab_ORIG.png # KN07 Inhaltsverzeichnis [TOC]
## Challenges ### A) Theorie: Recherche Datensicherung #### Ausgangslage: :bookmark: Datensicherung ist ein entscheidender Aspekt in jeder modernen IT-Infrastruktur. Insbesondere in der Cloud, wo Datenverlust oder -beschädigung katastrophale Folgen haben kann. Amazon Web Services (AWS) bietet eine Vielzahl von Tools und Diensten, um sicherzustellen, dass Ihre Daten effektiv geschützt und wiederhergestellt werden können. Zwei grundlegende Konzepte in diesem Zusammenhang sind "Snapshots" und "Backups". - **Snapshot:** Ein Snapshot ist eine Momentaufnahme eines EBS-Volumes. Es speichert den Zustand zu einem bestimmten Zeitpunkt und ist effizient, da es inkrementell Änderungen speichert. - **Backup:** Ein Backup ist eine umfassendere Sicherung von AWS-Ressourcen wie EC2-Instanzen, Datenbanken und S3-Buckets. Hierbei können spezifische Einstellungen und Konfigurationen berücksichtigt werden. AWS Backup ist ein zentralisierter Dienst zur Verwaltung dieser Backups. ### B) Lab: EBS Volume erstellen, Snapshot ziehen und daraus neues Volume erzeugen #### Ausgangslage: :bookmark: Für dieses Lab verwenden Sie in der **AWS Academy** den Kurs **AWS Academy Cloud Foundation**. In diesem Lab erstellen Sie ein Amazon EBS-Volume, hängen dieses an eine Instance und legen ein Dateisystem auf dem Volume an (diesmal Linux und nicht Windows). Danach erstellen Sie aus dem Volume ein Snapshot. Dies kann als Backup oder auch als Image für weitere Instanzen genutzt werden. #### Anleitung: Für den ersten Challenge der Kompetenz **KN07** wechseln Sie ins siebte Modul **Module 7 - Storage**. Hier finden Sie die praktische Übung **Lab 4 - Working with EBS**. Diese ist Schritt für Schritt geleitet. ##### Modul 7: Lab 4 - Working with EBS Das Lab dauert ca. 30'. Führen Sie alle Schritte konzentriert und der Reihe nach durch. ##### Aufbau: 1. : :mag_right: [Originalbild][01b] _(oder unten auf das Bild klicken)_
1 xxx | :---:| [![Aufbau][01a]][01b] #### Ziel der Übung :bell: Sie sind in der Lage, folgende Tasks durchzuführen: - Wiederholung: - Sie wissen, wie man ein EBS Volume erstellt. - Sie können ein EBS Volume einer EC2-Instanz anhängen. - Sie können per SSH auf eine EC2-Instanz zugreifen - Neu: - Sie können ein neues Volume erstellen und darauf ein ext3-Filesystem für eine Linux Distribution erzeugen (im KN04 haben sie bereits ein NTFS für Windows erzeugt) - Sie können das Volume persistent an eine EC2-Instanz mpunten (Wird bei Reboot eingehängt). - Sie können files auf diesem Volume ablegen (file.txt) - Sie können ein EBS Snapshot des Volumes erzeugen (Point-in-time Backup). - Sie löschen das vorher erstelle file auf dem Volume und beweisen anschliessend, dass sie dieses file mit einem Restore des Snapshots wiederherstellen können. ##### Leistungsnachweis - [ ] Ablauf nachvollziehbar im eigenen Repository dokumentiert. - [ ] Live-Demo beim Coach (File löschen und mit Restore des Snapshots wiederherstellen) - [ ] Fachgespräch mit Coach. ### C) Lab: Webserver erstellen, Snapshot ziehen und daraus neues Volume erzeugen #### Ausgangslage: :bookmark: Für dieses Lab verwenden Sie in der **AWS Academy** den Kurs **AWS Academy Learner Lab**. Dieser Challenge scheint auf den ersten Blick fast gleich wie der letzte. Wie bereits öfters durchgeführt, werden Sie in einer **Availability Zone** eine EC2-Instanz launchen mit einem Webserver. Den HTML-Code beziehen Sie von einem S3-Bucket. Wenn die Installation abgeschlossen ist und der Webserver funktioniert, werden Sie daraus ein **Snapshot / neues Image** erzeugen. Dieses **neue Image** beinhaltet also bereits die gesamte Applikation (in diesem Fall den Webserver inkl. index.html). Da **Snapshots** innerhalb einer **Region** in einem Object-Store **S3** abgelegt wird, kann das daraus erzeuge Image in einer **anderen Availability Zone** wieder gestartet werden. Diesmal dauert es bedeutend weniger lang, bis die EC2-Instanz läuft und auf den Webserver zugegriffen werden kann. Das **neue Image** beinhaltet bereits die gesamte Applikation. Das heisst also auch, dass unter User-data **kein** IaC-Script mehr eingetragen werden muss. #### Anleitung: ##### Schritt 1: IAM Instance Profile für Zugriff auf S3-Bucket <-- NOCH ERSTELLEN Zuerst muss ein sogenanntes **IAM Instance Profile** erstellt werden. Beim übernächsten Schritt wird dieses Profil der Instanz zugeteilt. Das **Instance Profile** bestimmt, **welche Berechtigungen** die Instanz erhält. 1. Öffnen Sie d ##### Schritt 2: S3-Bucket erstellen und File darin ablegen 1. Öffnen Sie die [AWS Management Console](https://aws.amazon.com/console/) und wählen Sie **S3**. 2. Klicken Sie auf `Create bucket`. 3. Bucket name: `KN07-C_` (z.B **KN07-C_Calis**). 4. Klicken Sie auf `upload` und legen Sie darin das file [ami-test.txt](https://gitlab.com/ser-cal/m346-scripts/-/blob/main/KN07/ami-test.txt) ab (HTML-Content - Im nächsten Schritt wird bei der Installation des Webservers darauf zugreifen) ##### Schritt 3: EC2-Instanz mit AMI Amazon Linux 2023 1. Öffnen Sie die [AWS Management Console](https://aws.amazon.com/console/). 2. Navigieren Sie zur EC2-Dashboardseite. 3. Klicken Sie auf "Launch instance". 4. Name: `KN07-C Webserver-Image` 5. Wählen Sie **Amazon Linux 202x** AMI aus. 6. Wählen Sie die Instanztyp **t2.micro** (free tier eligible). 7. Bei **Key pair** Wählen Sie `Proceed without a key pair` _(es wird **kein** Key pair benötigt bei diesem Challenge)_ 8. Unter **Network settings** wählen Sie eine bestehende Security Group aus, welche bereits eine **outbound rule** für **Port 80 (HTTP)** geöffnet hat, damit Sie später auf den Webserver zugreifen können. 9. Bei **Advanced details** muss unter `IAM Instance profile` das oben (oder früher) erstellte Profil **S3ReadOnly** ausgewählt werden. Damit stellen Sie sicher, dass die Instanz bei der Installation auf den S3-Bucket zugreifen kann, wo das HTML Indexfile abgelegt ist. 10. Ebenfalls bei **Advanced details** unter **user data** wird folgender Code eingetragen: :warning: **Hinweis:** Achten Sie darauf, dass sie in der letzten Zeile den Platzhalter `` noch mit dem Namen **Ihres** S3-Buckets ersetzen. ```bash #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd aws s3 cp s3:///ami-test.txt /var/www/html/index.html ``` 10. 11. Starten Sie die Instanz mit **Launch instance**. In diesem Fall werden Sie allerdings wie folgt vorgehen: - EC2-Instanz erstellen mit: - Mit Berechtigung zu S3-Bucket, um ein HTML-File (index.txt) runterzuladen - IaC-Code um einen Webserver zu erstellen und das obige index.txt in das Verzeichnis /var/www/html/index.html zu kopieren