mirror of
https://gitlab.com/ser-cal/m346.git
synced 2024-11-22 13:21:56 +01:00
Auftrag ergänzt
This commit is contained in:
parent
a7e4605502
commit
a6adfefd67
121
KN03/KN03.md
121
KN03/KN03.md
@ -98,14 +98,10 @@ Rufen Sie nun das cloud-init-log (`/var/log/cloud-init-output.log`) auf und merk
|
|||||||
|
|
||||||
|
|
||||||
#### Ziel der Übung
|
#### Ziel der Übung
|
||||||
:bell: **Verständnisaufbau** für xxx
|
:bell: **Verständnisaufbau** für das Deployment von deklarativen Scripts und die Nutzung von Public-Keys.
|
||||||
...des weiteren: <br>
|
|
||||||
- erstellen Sie einen DB-Benutzer (inkl. Passwort)
|
|
||||||
-
|
|
||||||
|
|
||||||
|
|
||||||
##### Leistungsnachweis
|
##### Leistungsnachweis
|
||||||
- [ ] xx
|
|
||||||
- [ ] Ihre angepasste Cloud-init Konfiguration als **Datei** im Git-Repository.
|
- [ ] Ihre angepasste Cloud-init Konfiguration als **Datei** im Git-Repository.
|
||||||
- [ ] Ein Screenshot der Details oder Liste der Instanz, welcher den **verwendeten** Key zeigt.
|
- [ ] Ein Screenshot der Details oder Liste der Instanz, welcher den **verwendeten** Key zeigt.
|
||||||
- [ ] 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 **ersten** Schlüssels.
|
||||||
@ -118,6 +114,10 @@ Rufen Sie nun das cloud-init-log (`/var/log/cloud-init-output.log`) auf und merk
|
|||||||
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
|
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
----
|
----
|
||||||
@ -125,7 +125,114 @@ Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben
|
|||||||
### C) Template (Beginner)
|
### C) Template (Beginner)
|
||||||
|
|
||||||
#### Ausgangslage:
|
#### Ausgangslage:
|
||||||
Sie wissen bere
|
Damit Ihr Coach / Lehrperson ebenfalls auf Ihre Instanz zugreifen kann, ergänzen Sie Ihre cloud-init-Scripts auch mit dessen Public-Key. Fordern Sie diesen an und ergänzen Sie diesen unter ssh_authorized_keys. Dieser Auftrag ist erfüllt, wenn die Lehrperson anschliessend ohne Authentifikation auf Ihre Instanzen zugreifen kann.
|
||||||
|
|
||||||
|
#### Anleitung
|
||||||
|
Erstellen Sie sich ein Cloud-Init Template aufgrund der Datei aus B), welches Sie bei den folgenden Kompetenzen einsetzen.
|
||||||
|
|
||||||
|
Fügen Sie auch direkt den [öffentlichen Schlüssel für Lehrpersonen](../PublicKey/346.pub) hinzu, so dass die darin eingetragenen Lehrpersonen Zugriff auf Ihre Instanzen kriegen. Es ist gut möglich, dass der Public-Key Ihrer Lehrperson **nicht** auf der Liste ist. In diesem Fall melden Sie sich kurz bei Ihr.
|
||||||
|
|
||||||
|
#### Ziel der Übung
|
||||||
|
:bell: **Verständnisaufbau**, dass mehrere Public Keys (von diversen Benutzern) hinzugefügt werden können.
|
||||||
|
...ausserdem
|
||||||
|
- Zugriff für Coach/Lehrperson auf Ihre Instanzen
|
||||||
|
|
||||||
|
|
||||||
|
##### Leistungsnachweis
|
||||||
|
- [ ] Ihr Coach kann auf eine beliebige Instanz von Ihrem Account zugreifen.
|
||||||
|
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert.
|
||||||
|
- [ ] Fachgespräch mit Coach.
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### D) Auftrennung von Web- und Datenbankserver
|
||||||
|
|
||||||
|
#### Ausgangslage:
|
||||||
|
Früher dominierten Monolithen als vorherrschende Architektur die IT. Hierbei wurde die gesamte Anwendung als **eine einzige Einheit** entwickelt, getestet und bereitgestellt. Dazu gehörten neben der Hardware auch das Betriebsssystem, Storage- und Datenbankanwendungen. Dabei entstanden oftmals komplexe und untrennbare Abhängigkeiten. Wenn z.B. ein Kernel-Patch installiert wurde, musste das gesamte System heruntergefahren. Das bedeutete oft Wochenendarbeit für die IT-Mitarbeiter und Downtime für die Applikation. Mit dem Aufkommen von komplexen und skalierbaren Anforderungen haben sich deshalb Microservices als Alternative etabliert und inzwischen durchgesetzt. Microservices zerlegen die Anwendung in unabhängige, spezialisierte Dienste, was eine verbesserte Skalierbarkeit, Wartbarkeit und Flexibilität ermöglicht. Diese Verschiebung markiert einen Wandel hin zu agileren und anpassungsfähigeren Ansätzen in der heutigen Softwarelandschaft.
|
||||||
|
|
||||||
|
#### Anleitung
|
||||||
|
In KN02 hatten Sie eine virtuelle Instanz installiert mit Web- und Datenbankserver. Sie haben gesehen, dass viele Befehle ausgeführt werden müssen und dass die gesamte Anwendung schlussendlich auf nur einer Instanz läuft. Wenn Sie nun dieselbe Anwendung nochmals installieren, müssten Sie sämtliche Schritte immer wieder von Hand (imperativ) durchführen. Cloud-init hilft Ihnen die Installation zu vereinfachen/automatisieren. Man spricht dann von der **deklarativen Methode** und von **Infrastructure as Code**. Beide Begriffe werden Sie in ihrer Laufbahn als Plattformentwickler noch des öfteren hören und lesen.
|
||||||
|
|
||||||
|
**Die drei wichtigsten Vorteile von Cloud-init sind:**
|
||||||
|
|
||||||
|
1. **Automatisierte Bereitstellung:** Cloud-init ermöglicht die automatische Konfiguration und Initialisierung von virtuellen Maschinen, wodurch die Bereitstellung beschleunigt und vereinfacht wird.
|
||||||
|
2. **Skalierbarkeit:** Durch die Anwendung von identischen Konfigurationen auf mehreren Instanzen können Ressourcen leicht skaliert werden, um auf steigende Anforderungen zu reagieren.
|
||||||
|
3. **Zentrale Verwaltung und Aktualisierung:** Cloud-init ermöglicht eine zentrale Verwaltung von Konfigurationen und erleichtert die Aktualisierung und Wartung von VM-Instanzen, was Konsistenz und Wartbarkeit fördert.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
In der nächsten Teilaufgabe werden wir die Datenbank und den Webserver **voneinander trennen** in zwei Unterschiedliche Instanzen. Für beide Instanzen werden Sie zudem eine Cloud-init Datei (***cloud-init-web.yaml, und cloud-init-db.yaml***) erstellen.
|
||||||
|
|
||||||
|
Das folgende Schema zeigt Ihnen unsere Zielarchitektur mit den entsprechenden Ports. **Beachten Sie den zusätzlichen Port, den Sie nun ebenfalls öffnen müssen (auf der richtigen Instanz).**
|
||||||
|
|
||||||
|
![Schema](./x_res/10_Topologie_1200.png)
|
||||||
|
|
||||||
|
**Aufgaben**:
|
||||||
|
|
||||||
|
- Lesen Sie das folgende kurz durch bevor Sie beginnen. Erstellen Sie dann **zuerst** den **Datenbank**-Server. Wenn dieser läuft und die Screenshots gemacht wurden, erstellen Sie den Web-Server. **Wichtig:** Der Datenbank-Server muss laufen, bevor Sie den Webserver installieren. Sie brauchen im Script des Webservers (Frontend) die **Interne IP-Adresse** des Datenbank-Servers für die Verbindung zwischen Front- und Backend (Port 3306).
|
||||||
|
- Installieren Sie die gleichen **Pakete** wie in KN02 via Cloud-Init. Verteilen Sie die Pakete korrekt auf die beiden Cloud-init Dateien. Dazu müssen Sie überlegen und genau verstehen, welche Befehle für welchen Dienst genutzt werden.
|
||||||
|
- In KN02 hatten Sie Dateien via GIT geklont und dann an die Zielorte kopiert. Sie gehen nun ein wenig anders vor. Sie verwenden die **write_files**-Anweisung von Cloud-init, um Dateien zu erstellen. Sie finden in der [Doku zu Cloud-init: Write Files](https://cloudinit.readthedocs.io/en/latest/reference/modules.html#write-files) weitere Informationen. Sie können die Datei-Inhalte vom [letzten Auftrag](../KN02/KN02.md#c-installation-von-web--und-datenbankserver) kopieren.
|
||||||
|
- In KN02 hatten Sie verschiedene Befehle ausführen müssen. Verwenden Sie die **runcmd**-Anweisung von Cloud-init, um Befehle auszuführen. Sie müssen natürlich nur noch die Befehle ausführen, die in den vorherigen Punkten nicht abgedeckt sind.
|
||||||
|
- Führen Sie den folgenden Befehl noch zusätzlich aus:
|
||||||
|
`sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mariadb.conf.d/50-server.cnf`. Dieser Befehl ändert die Konfigurationsdatei der Datenbank und lässt externe Verbindungen zu.
|
||||||
|
- Fügen Sie das Paket *adminer* hinzu. Adminer bietet eine GUI, um Datenbanken zu administrieren. Sie müssen anschliessend die beiden folgenden Befehle ausführen (Die entsprechende Cloud-init-Anweisung kennen Sie bereits):
|
||||||
|
1. `sudo a2enconf adminer`. Dies fügt die Konfiguration für das Paket *adminer* der *apache* Config hinzu
|
||||||
|
2. Starten Sie den Apache Service neu.
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
**Templates für die IaC-Files**
|
||||||
|
- Als Hilfe dienen Ihnen die beiden IaC-Script-Vorlagen (unten). Sie können diese downloaden und wo nötig ergänzen.
|
||||||
|
- Erklären Sie im Script oder in Ihrer Doku **jede einzelne Zeile** (Text nach einem Hashtag **#** wird als Text interpretiert).
|
||||||
|
- Achten Sie auch auf die Zeileneinzüge (Indendations). Diese sind in den Vorlagen korrekt - daran müssen Sie nichts ändern. Bedenken Sie aber, dass sie in YAML-Files zu Fehlern führen, wenn sie **nicht** korrekt sind.
|
||||||
|
[IaC Vorlage cloud-init-db.yaml](./x_res/cloud-init-db_VORLAGE.yaml) | [IaC Vorlage cloud-init-web.yaml](./x_res/cloud-init-web_VORLAGE.yaml)
|
||||||
|
:-------------------------:|:-------------------------:
|
||||||
|
![cloud-init-db](./x_res/11_cloud-init-db_600.png) | ![cloud-init-web](./x_res/12_cloud-init-web1_600.png)
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
#### Ziel der Übung
|
||||||
|
:bell: **Verständnisaufbau** für das Erstellen und Anwenden von Cloud-init Scripts (IaC)
|
||||||
|
...ausserdem
|
||||||
|
- Bedeutung der Aufteilung von **Services** auf verschiedene Instanzen und deren Vorteile
|
||||||
|
|
||||||
|
|
||||||
|
##### Leistungsnachweis
|
||||||
|
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert.
|
||||||
|
- [ ] Fachgespräch mit Coach.
|
||||||
|
|
||||||
|
...sowie folgende Punkte
|
||||||
|
|
||||||
|
- [ ] **Beweisführung DB Server**
|
||||||
|
|
||||||
|
1. Verbinden Sie sich mit dem Server (Shell) und zeigen Sie, dass, die Datenbankverbindung mit dem Benutzer *admin* funktioniert. Der Befehl dazu lautet `mysql -u admin -p`. Sie müssen dann anschliessend das Passwort eingeben. Erstellen Sie einen Screenshot, der den Befehl und die CLI von mysql zeigt.
|
||||||
|
2. Von ihrem lokalen System zeigen Sie, dass Sie von extern auf den Datenbank Server zugreifen können. Verwenden Sie dazu telnet mit dem Befehl `telnet <IP> 3306`. Erstellen Sie einen Screenshot des Befehls und des Resultats. Sie können den Telnet-Client über die Windows-Features aktivieren. Wenn Sie kryptische Zeichen als Antwort bekommen, funktioniert der Zugriff.
|
||||||
|
![Telnet](./x_res/07_telnet_1200.png)
|
||||||
|
|
||||||
|
3. Fügen Sie die Cloud-Init-Datei im Git-Repository hinzu.
|
||||||
|
|
||||||
|
- [ ] **Beweisführung Webserver**
|
||||||
|
|
||||||
|
1. Rufen Sie die Seiten index.html, info.php und db.php auf und erstellen Sie einen Screenshot der URL und des Inhalts.
|
||||||
|
2. Rufen Sie Adminer auf (http://ihre-ip/adminer/), verbinden Sie sich mit dem DB-Server und zeigen Sie mit Screenshots, dass die Verbindung funktioniert.
|
||||||
|
![Adminer](./x_res/08_Zugriff_1200.png)
|
||||||
|
|
||||||
|
...danach Zugriff auf die Datenbank
|
||||||
|
![Adminer](./x_res/09_Front-back_1200.png)
|
||||||
|
|
||||||
|
3. Fügen Sie die Cloud-Init-Datei im Git-Repository hinzu.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Häufige Fehlerquellen
|
||||||
|
|
||||||
|
- Sie vergessen die erste Zeile in der Cloud-init Datei `#cloud-config`. Diese ist notwendig!
|
||||||
|
- Einrückungen wurden nicht korrekt erstellt. Das Format können Sie hier überprüfen: <https://www.yamllint.com/>.
|
||||||
|
- Sie können auf dem Server die Log-Datei für Fehler durchsuchen: `/var/log/cloud-init-output.log`
|
||||||
|
- Das Format des SSH-Schlüssels ist falsch. Korrekt ist: `ssh-key XXXXXXXXXX aws-key`.
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@ -134,7 +241,7 @@ Sie wissen bere
|
|||||||
|
|
||||||
### Quellen
|
### Quellen
|
||||||
|
|
||||||
- xx
|
puttygen: [Puttygen download](https://www.puttygen.com/)
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user