Draft ergänzt

This commit is contained in:
Marcello Calisto 2023-09-02 14:50:14 +02:00
parent 2a775d686b
commit 68c6557ef3

View File

@ -2,7 +2,7 @@
![TBZ Banner](../x_gitres/tbz_logo.png) ![TBZ Banner](../x_gitres/tbz_logo.png)
# KN02 Inhaltsverzeichnis # KN03 Inhaltsverzeichnis
[TOC] [TOC]
@ -12,71 +12,17 @@
Beachten Sie die [allgemeinen Informationen zu den Abgaben](../Abgaben.md). Beachten Sie die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
Wir nutzen **Amazon Web Services** oder abgekürt **AWS**. Alles was wir hier umsetzen, bieten allerdings auch andere public cloud Anbieter (z.B. Microsoft Azure, Google Cloud Platform oder Linode). Sämtliche Aufgaben in diesem Kompetenzband gehören zum Servicemodell **Infrastructure as a Service** (IaaS). Wir nutzen **Amazon Web Services** oder abgekürt **AWS**. Alles was wir hier umsetzen, bieten allerdings auch andere public cloud Anbieter (z.B. Microsoft Azure, Google Cloud Platform oder Linode).
Wir verwenden teilweise die AWS Schulungsumgebung für diese Kompetenz. Sie haben eine Einladung für die jeweiligen Kurse bekommen, die wir folgend verwenden werden.
Ein paar zusätzliche notwendige Grundlagen finden Sie in der Datei [Cloud Computing](../CloudComputing.md).
Sie erlernen den grundsätzlichen Umgang mit AWS. Anschliessend werden Sie lernen wie sie sich mit einem SSH Key einloggen, gefolgt vom Verständnis für Cloud-init. Am Schluss ergänzen Sie beide Kompetenzen in einer Konfiguration.
<br> <br>
## Challenges ## Challenges
### A) AWS Kurs (Zwei Lab-Übungen) ### A) Cloud-init Datei verstehen
#### Ausgangslage: #### Ausgangslage:
Die ersten drei Module sind informativ und sollten **schnell durchgegangen werden**. Im vierten Modul gibt es die ersten praktische Übungen. Diese sind Schritt für Schritt geleitet und werden mit den folgenden Übungen a) und b) durchgeführt. Dabei lernen grundsätzlich mit virtuellen Maschinen (EC2) und Storage Buckets (S3) umzugehen. xxx
- Öffnen Sie den Kurs **AWS Academy Introduction to Cloud: Semester 1**
- Arbeiten Sie sich durch die ersten 4 Module (Global Infrastructure, Structures of the Cloud, AWS Console, Virtual Servers). Sie müssen die Knowledge Checks **nicht** durchführen, dürfen aber.
- Das zweite Kapitel im Modul 4 heisst **Lab 4.1 - EC2**. Dieses Lab ist der erste Kompetenznachweis dieses Challenges (Details unten)
- Das zweite Kapitel im Modul 4 heisst **Lab 4.2 - S3**. Dieses Lab ist der zweite Kompetenznachweis dieses Challenges (Details unten).
- Führen Sie beide Labs durch und achten Sie auf die jeweiligen Punkte unter **Leistungsnachweis**
#### a) Lab 4.1 - EC2
Führen Sie alle Schritte durch. Sie erstellen die Screenshots der verschiedenen Bereiche für Ihre Abgabe **nachdem** Sie **alle** Schritte des Moduls durchgeführt haben.
##### 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).
#### b) Lab 4.2 - S3
Führen Sie alle Schritte durch. Sie erstellen die Screenshots der verschiedenen Bereiche für Ihre Abgabe **nachdem** Sie **alle** Schritte des Moduls durchgeführt haben.
#### Ziel der Übung
:bell: Erste Hands-on Erfahrung mit zwei der wichtigsten AWS-Services - **EC2** (VM) und **S3** (Object Storage)
##### Leistungsnachweis
- [ ] Liste der Buckets.
- [ ] HTML-Seite, inkl. URL.
- [ ] Liste der Dateien im Bucket.
- [ ] Eigenschaften von "Static website hosting".
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
<br>
----
### B) Zugriff mit SSH-Key
#### Ausgangslage:
Wechseln Sie nun den Kurs und verwenden Sie *"**Learner Lab**"*. Ab jetzt arbeiten Sie **immer** im **Learner Lab** - **Ausser explizit anders angegeben.**
Unter [Quellen](./KN02.md#quellen) finden Sie ein Dokument, welches die Unterschiede zwischen Passwort und SSH-Key beschreibt. Lesen Sie sich **kurz** ein, wenn Sie möchten. Wir werden grundsätzlich **kein Passwort** verwenden, sondern **immer** SSH Keys.
Sie werden nun gemäss der folgenden Anleitung eine EC2-Instanz und **zwei** Keypairs erstellen. Danach weisen Sie dieser EC2-Instanz einen der beiden Key pair Namen zu. Sobald die Instanz verfügbar ist, überprüfen Sie, ob Sie sich mit beiden Keys darauf einloggen können.
#### Anleitung: #### Anleitung:
Erstellen Sie nun wieder eine neue **Ubuntu**-Instanz in AWS mit den Standard-Einstellungen und erstellen Sie dann **zwei Key pairs** wie folgt: Erstellen Sie nun wieder eine neue **Ubuntu**-Instanz in AWS mit den Standard-Einstellungen und erstellen Sie dann **zwei Key pairs** wie folgt:
@ -133,7 +79,7 @@ Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben
---- ----
### C) Installation von Web- und Datenbankserver ### B) SSH-Key und Cloud-init (Beginner)
#### Ausgangslage: #### Ausgangslage:
Via SSH auf EC2-Instanz zugreifen und sämtliche Kommandos für das Setup des Webservers mit DB-Zugriff **manuell** (imperativ) der Reihe nach ausführen. Via SSH auf EC2-Instanz zugreifen und sämtliche Kommandos für das Setup des Webservers mit DB-Zugriff **manuell** (imperativ) der Reihe nach ausführen.
@ -162,46 +108,18 @@ Verwenden Sie die Instanz aus Aufgabe B) und gehen Sie wie folgt vor:
- `sudo apt install php`. Dieser Befehl installiert den PHP Applikationsserver. - `sudo apt install php`. Dieser Befehl installiert den PHP Applikationsserver.
- `sudo apt install libapache2-mod-php`. Dieser Befehl installiert die PHP-Erweiterung für Apache. - `sudo apt install libapache2-mod-php`. Dieser Befehl installiert die PHP-Erweiterung für Apache.
- `sudo apt install php-mysqli`. Dieser Befehlt installiert das PHP-Modul, um Datenbank-Abfragen zu erstellen. - `sudo apt install php-mysqli`. Dieser Befehlt installiert das PHP-Modul, um Datenbank-Abfragen zu erstellen.
- `sudo apt install mariadb-server`. Dieser Befehl installiert den Datenbankserver.
- `sudo mysql -sfu root -e "GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;"`. Dieser Befehl erstellt einen neuen Benutzer *admin* mit dem Passwort *password*. Wir werden diesen gleich verwenden.
- `sudo systemctl restart mariadb.service`. Dieser Befehl startet den DB Server neu.
- `sudo systemctl status mariadb.service`. Dieser Befehl checkt, ob der DB Server läuft. Falls Anzeige grün **active (running)**, dann ok.
- `sudo systemctl restart apache2`. Dieser Befehl startet den Webserver neu.
- `sudo systemctl status apache2`. Dieser Befehl checkt, ob der Webserver läuft. Falls Anzeige grün **active (running)**, dann ok.
- `cd ~`. Dieser Befehl stellt sicher, dass Sie sich in ihrem Home-Verzeichnis befinden
- `git clone https://gitlab.com/ser-cal/m346-scripts.git`. Diesen Befehl sollten Sie bereits beherrschen.
- `sudo cp ./m346-scripts/KN01/*.php /var/www/html/`. Dieser Befehl kopiert die beiden PHP-Dateien in das Verzeichnis des Webservers.
- Rufen Sie von ihrem Rechner nun die folgenden Seiten auf:
- *http://[Ihre-IP]/index.html*. Diese URL zeigt ihnen die Informationen von Apache an. Wenn die Seite funktioniert, zeigt dies, dass Apache installiert wurde und funktioniert.
- *http://[Ihre-IP]/info.php*. Diese URL zeigt ihnen die Informationen von PHP an. Wenn diese Seite funktioniert, zeigt dies, dass das PHP-Modul funktioniert und Sie nun dynamische Seiten hosten können.
- *http://[Ihre-IP]/db.php*. Diese URL zeigt ihnen die Datenbank-Benutzer. Wenn diese Seite funktioniert, zeigt es Ihnen, dass die Datenbank-Verbindung funktioniert.
#### Ziel der Übung #### Ziel der Übung
:bell: **Verständnisaufbau** für den Unterschied zwischen **imperativer** und **deklarativer** Plattformentwicklung. :bell: **Verständnisaufbau** für
Bei dieser Übung setzen Sie auf einer bestehenden EC2-Instanz einen Webserver mit Datenbankanbindug auf. Sie installieren dazu **imperativ** (Eingabe einzelner Kommandos per Tastatur) folgende Software:
- Apache Webserver
- PHP und PHP-Erweiterung für Apache
- PHP-Modul für Datenbankabfragen
- Datenbankserver (MariaDB)<br>
...des weiteren: <br> ...des weiteren: <br>
- erstellen Sie einen DB-Benutzer (inkl. Passwort) - erstellen Sie einen DB-Benutzer (inkl. Passwort)
- restarten anschliessend den DB-Server -
- ...und den den Webserver
Alle Commands schön der Reihe nach, sonst gibt es Probleme. Falls Sie **100** weitere Instanzen so aufsetzen müssten, würden Sie sämtliche Schritte 100x wiederholen :grimacing:. Gut also, dass das **imperative** Vorgehen vom **deklarativen** Vorgehen - auch **IaC** (Infrastructure as Code) genannt - abgelöst wird. Wie das geht, erfahren Sie schon bald :smiley:.
##### Leistungsnachweis ##### Leistungsnachweis
- [ ] Erstellen Sie Screenshots der **drei** Webseiten (mit sichtbaren URLs). - [ ] xx
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert. - [ ] xx
- [ ] Fachgespräch mit Coach.
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md). Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
@ -219,14 +137,13 @@ Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben
### Quellen ### Quellen
Thorntech: [Passwords vs. SSH keys - what's better for authentication?](https://thorntech.com/passwords-vs-ssh) - xx
<br> <br>
--- ---
> [⇧ **Zurück zu KN02**](./Readme.md) > [⇧ **Zurück zu KN03**](./Readme.md)
--- ---