KN02 hinzugefügt

This commit is contained in:
Marcello Calisto 2023-08-28 14:10:55 +02:00
parent a47489ffea
commit 19ffb14501
11 changed files with 190 additions and 0 deletions

152
KN02/KN02.md Normal file
View File

@ -0,0 +1,152 @@
![TBZ Logo](../../x_gitres/tbz_logo.png)
[TOC]
# KN02: IaaS - Virtuelle Server
Beachten Sie die [allgemeinen Informationen zu den Abgaben](https://gitlab.com/ch-tbz-it/Stud/m346/m346/-/blob/main/Abgaben.md).
Wir werden nun mit einem public cloud Anbieter arbeiten. Wir verwenden Amazon Web Services (AWS). Aber alles was wir hier umsetzen, bieten auch andere public cloud Anbieter (z. B. Microsoft Azure).
Wir verwenden teilweise die AWS Schulungsumgebung für diese Kompetenz. Sie haben eine Einladung für zwei Kurse bekommen, die wir folgend verwenden werden.
Ein paar zusätzliche notwendige Grundlagen finden Sie in der Datei [Cloud Computing in Gitlab](https://gitlab.com/ch-tbz-it/Stud/m346/m346/-/blob/main/CloudComputing.md).
Sie erlernen den grundsätzlichen Umgang mit AWS. Anschliessend werden Sie lernen wie sie sich mit einem SSH Key einloggt, gefolgt vom Verständnis für Cloud-init. Am Schluss vermischen Sie SSH-Key mit cloud-init Konfiguration.
### A) AWS Kurs
Öffnen Sie den Kurs *"**AWS Academy Introduction to Cloud: Semester 1**"* und 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.
Die ersten drei Module sind informativ und sollten **schnell durchgegangen werden**. Das vierte Modul sind praktische Übungen und werden mit den folgendem Teil a) und b) bearbeitet. Sie lernen grundsätzlich mit virtuellen Maschinen (EC2) und Storage Buckets (S3) umzugehen.
#### 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. Screenshots:
- HTML-Seite, inkl. URL
- Liste der EC2-Instanzen
- Details der *Web Server*-Instanz (öffentliche IP sichtbar)
- Security-Group: Liste der Inbound-Regeln.
#### 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. Screenshots:
- Liste der Buckets.
- HTML-Seite, inkl. URL.
- Liste der Dateien im Bucket.
- Eigenschaften von "Static website hosting".
### B) Zugriff mit SSH-Key
Wechseln Sie nun den Kurs und verwenden *"**Lerner Lab**"*. Ab sofort arbeiten Sie **immer** im **Lerner Lab**, ausser explizit anders angegeben.
Unter [Quellen](./#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 und immer SSH Keys.
Erstellen Sie nun wieder eine neue **Ubuntu**-Instanz in AWS mit den Standard-Einstellungen wie folgt:
- Ubuntu Server 22.04 AMI (Amazon Machine Image) auswählen.
- Achten auf **Free tier eligible**.
Auswahl AMI (Amazon Machine Image), **Free tier eligible** |
:-------------------------:|
![keypair1](./x_res/02_os_800.png) |
- Bei "Key pair" erstellen Sie **zwei** Key-Value Pairs! Geben Sie Namen wie <Ihr-Name>-1 und & lt;Ihr-Name>-2.
Create new Key pair | Felder ausfüllen / anwählen
:-------------------------:|:-------------------------:
![keypair1](./x_res/01a_Keypair_400.png) | ![keypair2](./x_res/01b_Keypair_400.png)
- Stellen Sie sicher, dass Sie **beide Schlüssel** herunterladen.
- Nachdem beide Keys erstellt wurden, wählen Sie bei "Key pair" dann den **ersten** Key aus. Belassen sie die restlichen Parameter so wie sie bereits eingestellt sind. Scrollen Sie bis ganz nach unten und klicken Sie auf **Launch instance**.
Speicherort der privaten (und öffentlichen) Schlüssel muss ein Pfad sein, der eingeschränkte Rechte hat (nur Ihr persönlicher Account). Normalerweise wird der Pfad `C:\Users\<ihrBenutzer>\.ssh` verwendet.
Der Befehl für den Zugriff sieht nun folgendermassen aus. Der Parameter -o verhindert, dass Sie ein Timeout kriegen.
---
```bash
ssh <user>@<server> -i <path-to-privatekey>\<private-key-file>.pem -o ServerAliveInterval=30
# Standard-Benutzername ist ubuntu!
# Beispiel: ssh ubuntu@121.12.3.1 -i c:\Users\nussle\.ssh\yves-1.pem -o ServerAliveInterval=30
```
---
Zeigen Sie, dass sie sich **nur** mit **dem ausgewählten** Schlüssel einloggen können.
**Hinweis**: AWS speichert ihren privaten Schlüssel **nicht**. Sie können den nicht wiederherstellen. Auf dem Ubuntu-Server liegt immer nur der öffentliche Schlüssel. Seien Sie also vorsichtig und verlieren Sie den Schlüssel nicht.
**Abgaben**:
- Screenshot mit dem ssh-Befehl und des Resultats unter Verwendung des **ersten** Schlüssels
- Screenshot mit dem ssh-Befehl und des Resultats unter Verwendung des **zweiten** Schlüssels
- Screenshot der Instanz-Detail (oder Liste), so dass der verwendete Schlüssel sichtbar ist.
### C) Installation von Web- und Datenbankserver
Verwenden Sie die Instanz aus Aufgabe B). Wir installieren nun einen Webserver und eine Datenbank auf ihrem Ubuntu. Führen Sie folgende Punkte aus:
- Offene Ports:
- 22 für SSH Zugriff (sollte bereits vorhanden sein)
- 80 für HTTP Zugriff (dazu müssen sie in der ausgewählten Security Group noch eine Inbound rule erstellen - gleich wie beim ersten Lab, siehe Bild unten)
Inbound rule für HTTP hinzufügen |
:-------------------------:|
![keypair1](./x_res/02_sg_http_800.png) |
- Führen Sie folgende Befehl aus. Sie müssen die Befehle **nicht** dokumentieren.
- `sudo apt update` auf. Dieser Befehl aktualisiert die Pakete/Software.
- `sudo apt install apache2`. Dieser Befehl installiert den Apache Webserver.
- `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 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/ch-tbz-it/Stud/m346/m346scripts.git`. Diesen Befehl sollten Sie bereits beherrschen.
- `sudo cp ./m346scripts/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.
**Abgabe**:
- Erstellen Sie Screenshots der **funktionierenden** Webseiten (mit sichtbarer URL)
**Beispiel-Abgabe**:
- Screenshots der drei URLs:
Apache | PHP | DB-User
:---:|:---:|:---:|
![Apache](./x_res/03a_apache_300.png) | ![PHP](./x_res/03b_apache_300.png) | ![User](./x_res/03c_user_300.png)
### Quellen
Thorntech: [Passwords vs. SSH keys - what's better for authentication?](https://thorntech.com/passwords-vs-ssh)

23
KN02/Readme.md Normal file
View File

@ -0,0 +1,23 @@
![TBZ Logo](../../x_gitres/tbz_logo.png)
[TOC]
# KN 02 - Informationen für die Lehrperson
## Allgemeine Infos
Die Lernenden lassen sich leicht ablenken. Die AWS-Kurse werden als 30 Minuten angegeben, aber viele Lernenden benötigen bis zu 4 Lektionen (oder sogar noch mehr).
## Einbindung in Unterricht
**Selbstständiger Auftrag**
**Abnahme**: Screenshots via Git.
[Aufgaben Markdown](./KN02.md)
[Aufgaben PDF](./KN02.pdf)

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
KN02/x_res/02_os_800.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
KN02/x_res/03c_user_300.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

@ -0,0 +1,15 @@
#cloud-config
users:
- name: ubuntu
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
home: /home/ubuntu
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7uUevS7iVPRPFAmdCAIAk7xg7szJUBhmRhLlNgGg3hQb8Zify0Mvm28yO/BW9XUdgW85pmcmbpyP7Y+pDkWHEFbWBjFdTgmYyoszn08fIsApcVJkauqDLmaz9Fd+FtyZGFJapdgR34nLiT1meklO8/Z/mynSYFuzAWClmRiyZXPok2qQJM/xqZRCudatskYJFobiS/+9pSvohIMT/WLhaBsJStctK1QWWQTuPsfO/6QKFkM378qUeJ74lGBfd7cU0Z3i0B3t9r/bhVu0vsyfQdbiWqL3Bhzl2n/KHaDi2t4mcJwEVIDyzr+6vkSLdu3X09vCcsJPGnLirTHVUGo07 aws-key
ssh_pwauth: false
disable_root: false
package_update: true
packages:
- curl
- wget