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 verwenden teilweise die AWS Schulungsumgebung für diese Kompetenz. Sie haben eine Einladung für die jeweiligen Kurse bekommen, die wir folgend verwenden werden.
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.
verwenden Sie für die folgenden Challenges das *"**Learner Lab**"*. Ab jetzt arbeiten Sie **immer** im **Learner Lab** - **Ausser explizit anders angegeben.**
- Der erste Challenge heisst **EC2 Einstieg**. Dieses Lab ist der **erste** Kompetenznachweis des Challenges **KN02 A)**_(Details unten: Lab - EC2 Einstieg)_.
- Der zweite Challenge heisst **S3 Einstieg**. Dieses Lab ist der **zweite** Kompetenznachweis des Challenges **KN02 A)**_(Details unten: Lab - S3 Einstieg)_.
Wenn Sie bereit sind, starten Sie das **Learner Lab** und klicken auf den Link. Führen Sie alle Schritte der Reihe nach durch. Beachten Sie vor der Abgabe die Punkte unten unter **Leistungsnachweise**
Für dieses Lab gibt es [**DIESE**](./challenge_a/KN02a_2.md) "Schritt für Schritt-Anleitung".
Wenn Sie bereit sind, starten Sie das **Learner Lab** und klicken auf den Link. Führen Sie alle Schritte der Reihe nach durch. Beachten Sie vor der Abgabe die Punkte unten unter **Leistungsnachweise**
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.
- 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.
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.
:bell: Sie verstehen, wie Key pairs erstellt und angewendet werden. Einer wird nicht funktionieren. Überlegen Sie sich, weshalb das so ist und wie die Authentifizierung durchgeführt wird. Wo werden die Keys (Private / Public) abgelegt?
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.
Verwenden Sie die Instanz aus Aufgabe B) und gehen Sie wie folgt vor:
- 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)
- Bauen Sie von Ihrem Laptop aus eine SSH-Verbindung auf Ihre EC2-Instanz auf (via Terminalfenster auf ihrem Laptop mit SSH auf die EC2-Instanz zugreifen). Kommandos auf Ihrer EC2-Instanz der letzten Übung auszuführen:
- 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.
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:
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:.