m346/KN02/challenge_a/KN02a_1.md
2024-10-18 19:37:37 +02:00

238 lines
13 KiB
Markdown

[10]: https://git-scm.com/downloads
![TBZ Banner](../../x_gitres/tbz_logo.png)
# Inhaltsverzeichnis KN02 Challenge A-1)
### Erster Teil-Challenge
[TOC]
<br>
## Ausgangslage:
Verwenden Sie für den folgenden Teil-Challenge das AWS Academy *"**Learner Lab**"*. Ab jetzt arbeiten Sie **immer** im **Learner Lab** - **Ausser explizit anders angegeben.**
- Der **erste** Teil-Challenge von **KN02 A)** heisst **EC2 Einstieg**. Dieses Lab ist der erste Kompetenznachweis von Challenge **A)**. Sie erstellen erstmals eine **EC2 Instanz** und ergänzen diese mit einem einfachen **IaC-Code**, der zusätzlich einen Webdienst installiert, aktiviert und eine einfache Webseite mit einem Titel **Modul 346 Challenge KN02a: <Nachnamen-Kürzel>** erstellt.
- Führen Sie dieses Lab durch und achten Sie auf die jeweiligen Punkte unter **Leistungsnachweis** des [KN02 Hauptauftrages](../KN02.md#1-teil-challenge-ec2-einstieg) unter Challenge A
Beachten Sie die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
## Challenge
### 1. Teil-Challenge: EC2 Einstieg
Führen Sie alle Tasks durch. Sie erstellen die Screenshots der verschiedenen Bereiche für Ihre Abgabe **nachdem** Sie **alle** Schritte des Challenges durchgeführt haben.
#### 1. Task: Erstellen und Benennen einer EC2-Instanz
**:radio_button: Schritt 1: Navigieren Sie zum EC2-Service**
- Gehen Sie zur **AWS Management Console**.
- Wählen Sie im **Services**-Menü den Bereich **Compute** und dann **EC2**.
**:radio_button: Schritt 2: Instanz starten**
- Klicken Sie auf die Schaltfläche **Launch instance** in der Mitte der Seite.
- Wählen Sie **Launch instance** aus dem Dropdown-Menü.
**:radio_button: Schritt 3: Instanz benennen**
- Geben Sie im Feld unter **Name and tags** den Namen `Web Server 1` ein.
- Dieser Name wird als ein Tag gespeichert, bei dem der "Key" `Name` und der "Value `Web Server 1` ist.
**:pushpin: Hinweis zu Tags:**
- Tags helfen Ihnen, Ihre AWS-Ressourcen auf verschiedene Weise zu kategorisieren, z. B. nach Zweck, Eigentümer oder Umgebung.
- Dies ist besonders nützlich, wenn Sie viele Ressourcen desselben Typs haben, da Sie eine bestimmte Ressource schnell anhand der vergebenen Tags identifizieren können.
- Jeder Tag besteht aus einem **Key** und einem **Value**, die Sie selbst definieren.
- Der **Name** ist einfach ein weiteres Tag. Der Schlüssel für dieses Tag ist `Name`, und der Wert lautet `Web Server 1`.
#### 2. Task: Anwendungs- und Betriebssystem-Images
**:radio_button: Schritt 4: Wählen Sie eine AMI aus, um die Instanz zu erstellen**
- In der Liste der verfügbaren **Quick Start AMIs** bleibt die standardmäßig ausgewählte **Amazon Linux AMI** ausgewählt.
- Behalten Sie ebenfalls das standardmäßig ausgewählte **Amazon Linux 2023 AMI** bei.
- Der Typ des ausgewählten **Amazon Machine Image (AMI)** bestimmt das Betriebssystem (OS), das auf der gestarteten EC2-Instanz läuft. In diesem Fall haben Sie **Amazon Linux 2023** als Gastbetriebssystem ausgewählt.
#### 3. Task: Instanztyp wählen
**:radio_button: Schritt 5: Geben Sie einen Instanztyp an**
- Im **Instance type**-Panel bleibt die standardmäßig ausgewählte **t2.micro**-Instanz ausgewählt.
- Der **Instance Type** definiert die Hardware-Ressourcen, die der Instanz zugewiesen werden. Dieser Instanztyp verfügt über **1 virtuelle CPU** (vCPU) und **1 GiB Speicher**.
#### 4. Task: Wählen Sie ein Schlüsselpaar (Key pair)
**:radio_button: Schritt 6: Wählen Sie das Schlüsselpaar (Key pair), das der Instanz zugeordnet wird:**
- Wählen Sie im Menü **Key pair name** das Schlüsselpaar **vockey** aus.
- Das ausgewählte Schlüsselpaar **vockey** ermöglicht es Ihnen, nach dem Start der Instanz über SSH eine Verbindung herzustellen. Obwohl Sie dies in diesem Lab nicht tun müssen, ist es erforderlich, ein vorhandenes Schlüsselpaar zu identifizieren oder ein neues zu erstellen, wenn Sie eine Instanz starten.
#### 5. Task: Netzwerkeinstellungen
**:radio_button: Schritt 7: Bearbeiten der Netzwerkeinstellungen:**
- Wählen Sie neben **Network settings** die Option **Edit**.
**:radio_button: Schritt 8: Standardeinstellungen beibehalten:**
- Behalten Sie die Standard-VPC- und Subnetz-Einstellungen bei. Lassen Sie die Einstellung **Auto-assign public IP** auf **Enable**.
- Das **Netzwerk** gibt die Virtual Private Cloud (VPC) an, in die Sie die Instanz starten möchten. Sie können mehrere Netzwerke haben, z. B. eines für die Entwicklung, ein zweites für das Testen und ein drittes für die Produktion.
**:radio_button: Schritt 9: Firewall (Security Group) konfigurieren:**
- Lassen Sie die Standardauswahl **Create security group** aktiviert.
**:radio_button: Schritt 10: Konfigurieren einer neuen Security Group:**
- Lassen Sie die Standardeinstellung **Create a new security group** ausgewählt.
- **Security group name:** Löschen Sie den Text und geben Sie `Web Server` ein.
- **Description:** Löschen Sie den Text und geben Sie `Security group for my web server` ein.
- Wählen Sie **Remove**, um die Standardregel für eingehenden SSH-Verkehr zu entfernen.
**:pushpin: Hinweis:**
- Sie werden später in diesem Lab eine andere Regel für **eingehenden** Verkehr - eine sogenannte **Inbound rule** - konfigurieren.
- Eine **Security Group** fungiert als virtuelle Firewall, die den Datenverkehr für eine oder mehrere Instanzen steuert. Beim Start einer Instanz können Sie eine oder mehrere **Security Groups** mit der Instanz verknüpfen. Sie fügen jeder **Security Group** Regeln hinzu, die den Datenverkehr zu oder von den zugehörigen Instanzen zulassen. Sie können die Regeln einer **Security Group** jederzeit ändern. Neue Regeln werden automatisch auf alle mit der **Security Group** verknüpften Instanzen angewendet.
#### 6. Task: Speicher konfigurieren
**:radio_button: Schritt 11: Im Abschnitt "Configure storage":**
- Behalten Sie die Standardeinstellungen bei.
**:pushpin: Hinweis:**
- Sie werden die Amazon EC2-Instanz mit einem standardmäßigen **Elastic Block Store (EBS)**-Datenträger starten. Dieser wird Ihr **Root-Volume** (auch als Boot-Volume bekannt) sein, auf dem das zuvor angegebene **Amazon Linux 2023**-Gastbetriebssystem gehostet wird.
- Es wird auf einer **General Purpose SSD (gp2)**-Festplatte mit einer Größe von **8 GiB** laufen.
- Sie könnten zusätzliche Speicher-Volumes hinzufügen, aber das ist in diesem Lab nicht erforderlich (kommt in einem späteren Challenge).
#### 7. Task: Erweiterte Details
**:radio_button: Schritt 12: Konfigurieren Sie ein Skript, das beim Start der Instanz ausgeführt wird:**
- Erweitern Sie das Panel **Advanced details**.
- Scrollen Sie zum Ende der Seite und kopieren Sie den unten stehenden Code in das Feld **User data**.
- **Achtung:** Ersetzen Sie den Kürzel <mark>**CAL**</mark> mit den **ersten drei Buchstaben ihres Nachnamens**.
```bash
#!/bin/bash
yum update -y
yum -y install httpd
systemctl enable httpd
systemctl start httpd
echo '<html><h1>Modul 346 Challenge KN02 A-1: CAL</h1></html>' > /var/www/html/index.html
```
**:pushpin: Details zum Skript:**
- Dieses Bash-Skript wird mit Root-Benutzerrechten auf dem Gastbetriebssystem der Instanz ausgeführt.
- Es wird automatisch ausgeführt, wenn die Instanz zum ersten Mal startet.
- Das Skript führt folgende Aktionen aus:
- Aktualisiert den Server
- Installiert einen **Apache Webserver (httpd)**
- Konfiguriert den Webserver so, dass er automatisch beim Booten startet
- Startet den Webserver
- Erstellt eine einfache Webseite
#### 8. Task: Überprüfen Sie die Instanz und starten Sie diese
**:radio_button: Schritt 13: Instanz starten**
- Wählen Sie am Ende des **Summary**-Panels auf der rechten Seite des Bildschirms das orange Feld **Launch instance**.
- Sie werden eine **Success message** (Erfolgsnachricht) sehen.
**:radio_button: Schritt 14: Alle Instanzen anzeigen**
- Wählen Sie das orange Feld **View all instances**.
- Die Instanz wird zunächst im **Pending**-Zustand angezeigt, was bedeutet, dass sie gestartet wird. Der Zustand ändert sich dann auf **Running**, was anzeigt, dass die Instanz mit dem Booten begonnen hat. Es kann einige Minuten dauern, bis die Instanz hochgefahren ist.
**:radio_button: Schritt 15: Details zur Instanz überprüfen**
- Wählen Sie die Instanz **Web Server 1** aus und überprüfen Sie die Informationen im Tab **Details**, der im unteren Bereich angezeigt wird.
- Beachten Sie, dass die Instanz eine **öffentliche IPv4-Adresse** hat. Sie können diese IP-Adresse verwenden, um von außerhalb mit der Instanz zu kommunizieren.
**:radio_button: Schritt 16: Warten auf den vollständigen Start**
- Bevor Sie fortfahren, warten Sie, bis Ihre Instanz Folgendes anzeigt:
- **Instance state:** Running
- **Status check:** 2/2 checks passed
**:pushpin: Hinweis:**
Dies kann einige Minuten in Anspruch nehmen. Wählen Sie das **Aktualisieren**-Symbol oben auf der Seite alle 30 Sekunden oder so, um schneller über den neuesten Status der Instanz informiert zu werden.
#### 9. Task: Greifen Sie auf Ihre EC2-Instanz zu
Als Sie Ihre EC2-Instanz gestartet haben, haben Sie ein Skript bereitgestellt, das einen Webserver installiert und eine einfache Webseite erstellt hat. In diesem Task werden Sie versuchen, auf den Inhalt des Webservers zuzugreifen.
**:radio_button: Schritt 17: Öffentliche IPv4-Adresse kopieren**
- Kopieren Sie den Wert der **Public IPv4 address** Ihrer Instanz aus dem Tab **Details** in Ihre Zwischenablage.
**:pushpin: Hinweis:**
Eine öffentliche Adresse bedeutet, dass die Instanz von Internet aus erreichbar ist. Jede Instanz, die eine öffentliche IP-Adresse erhält, erhält auch einen externen DNS-Hostnamen, zum Beispiel: **ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com**. AWS löst einen externen DNS-Hostnamen in die öffentliche IP-Adresse der Instanz auf, wenn die Kommunikation von außerhalb ihrer VPC kommt. Wenn die Kommunikation von innerhalb der VPC erfolgt, wird der DNS-Hostnamen in die private IPv4-Adresse aufgelöst.
**:radio_button: Schritt 18: Im Webbrowser zugreifen**
- Öffnen Sie einen neuen Tab in Ihrem Webbrowser, fügen Sie die öffentliche IP-Adresse, die Sie gerade kopiert haben, ein und drücken Sie die Eingabetaste.
**:pushpin: Hinweis:**
Die Webseite wird nicht geladen. Sie müssen die **Security Group** (Sicherheitsgruppe) noch mit einer **Inbound rule** ergänzen, um auf die Seite zugreifen zu können.
#### 10. Task: Aktualisieren Sie die Security Group
Sie können nicht auf Ihren Webserver zugreifen, da die Sicherheitsgruppe den eingehenden Datenverkehr über **Port 80**, der für HTTP-Webanfragen verwendet wird, nicht zulässt. In dieser Aufgabe aktualisieren Sie die Sicherheitsgruppe.
**:radio_button: Schritt 19: Zur EC2-Management-Konsole zurückkehren**
- Kehren Sie zum Browser-Tab der EC2-Management-Konsole zurück.
**:radio_button: Schritt 20: Security Groups auswählen**
- Wählen Sie im linken Navigationsbereich unter **Network & Security** die Option **Security Groups**.
**:radio_button: Schritt 21: Security Group "Web Server" auswählen**
- Wählen Sie die Security Group **Web Server** aus, die Sie beim Start Ihrer EC2-Instanz erstellt haben.
**:radio_button: Schritt 22: Eingehende Regeln anzeigen**
- Wählen Sie im unteren Bereich den Tab **Inbound rules**.
#### 11. Task: Inbound rule erstellen
**:radio_button: Schritt 23: Eingehende Regeln bearbeiten**
- Wählen Sie **Edit inbound rules** und dann **Add rule**.
**:radio_button: Schritt 24: Konfigurieren Sie die Regel**
- Konfigurieren Sie folgendes:
- **Type:** HTTP
- **Source:** Anywhere-IPv4
- Wählen Sie **Save rules**.
**:pushpin: Hinweis:** Die neue eingehende HTTP-Regel erstellt einen Eintrag für IPv4-IP (0.0.0.0/0) und IPv6-IP-Adressen (::/0).
#### 12. Task: Regel testen
**:radio_button: Schritt 25: Zur vorherigen Registerkarte zurückkehren**
- Kehren Sie zu dem Tab zurück, den Sie verwendet haben, um eine Verbindung zum Webserver herzustellen.
**:radio_button: Schritt 26: Seite aktualisieren**
- Aktualisieren Sie die Seite.
- Die Seite sollte die Nachricht **Modul 346 Challenge KN02a: <IHR Kürzel>** anzeigen.
#### Lab abgeschlossen
Herzlichen Glückwunsch! Sie haben das Lab abgeschlossen.
**:radio_button: Schritt 27: Abmelden von der AWS Management Console**
- Melden Sie sich von der AWS Management Console ab.
- Klicken Sie in der oberen rechten Ecke der Seite auf Ihren Benutzernamen
- Wählen Sie **Sign out**.
**:radio_button: Schritt 28: Labor beenden**
- Wählen Sie **End Lab** im **Learner Lab** und bestätigen Sie mit **Yes**, dass Sie das Labor beenden möchten.
#### Ziel der Übung
:bell: Erste Hands-on Erfahrung mit dem AWS Service **EC2** (Elastic Compute Cloud)
##### Leistungsnachweis
- [ ] HTML-Seite, inkl. URL
- [ ] Liste der EC2-Instanzen
- [ ] Details der *Web Server*-Instanz (öffentliche IP sichtbar)
- [ ] Security-Group: Liste der Inbound-Regeln.
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../../Abgaben.md).
<br>
---
> [⇧ **Zurück zu KN02**](../KN02.md)
---
> [⇧ **Zurück zur Hauptseite**](https://gitlab.com/ser-cal/M346)
---