[10]: https://git-scm.com/downloads
[11a]: ./x_res/11_VPC-create_400.png
[11b]: ./x_res/11_VPC-create_ORIG.png
[12a]: ./x_res/12_VPC-create_400.png
[12b]: ./x_res/12_VPC-create_ORIG.png
[13a]: ./x_res/13_VPC-create_400.png
[13b]: ./x_res/13_VPC-create_ORIG.png
[22a]: ./x_res/22_Public_Route-table_600.png
[22b]: ./x_res/22_Public_Route-table_ORIG.png
[23a]: ./x_res/23_Public_Route-table_600.png
[23b]: ./x_res/23_Public_Route-table_ORIG.png
![TBZ Banner](../x_gitres/tbz_logo.png)
# KN05 Inhaltsverzeichnis
[TOC]
## Challenges
### A) Lab: VPC erstellen und einen Web Server darin deployen
#### Ausgangslage:
:bookmark: Für dieses Lab verwenden Sie in der **AWS Academy** den Kurs **Cloud Foundation**.
Die ersten vier Module dürfen Sie freiwillig durcharbeiten. Sie beinhalten Themen, die hilfreich für das Konzeptverständnis von AWS sind.
...und übrigens: auch sehr geeignet für die Vorbereitung zur **AWS Cloud Practitioner** Zertifizierung.
#### Anleitung:
Für den ersten Challenge der Kompetenz **KN05** wechseln Sie ins fünfte Modul **Module 5 - Networking and Content Delivery**. Hier finden Sie die praktische Übung **Lab 2 - Build your VPC and Launch a Web Server**. Diese ist Schritt für Schritt geleitet.
Nach Abschluss dieser Übung sind Sie in der Lage, folgende Tasks selbständig durchzuführen:
- Eine Virtual Private Cloud (VPC) erstellen.
- Private und öffentliche Subnetze in einer VPC aufsetzen.
- Konfigurieren und Anpassen einer Security Group.
- Starten einer EC2-Instanz innerhalb dieser VPC.
##### Modul 5: Lab 2 - Networking and Content Delivery
Das Lab dauert ca. 30'. Die Vergangenheit hat gezeigt, dass in diesem Lab sehr schnell Flüchtigkeitsfehler passieren. Es wird deshalb empfohlen, sich an einen ruhigen Ort zurückzuziehen. Führen Sie alle Schritte konzentriert und der Reihe nach durch. Für den Leistungsnachweis müssen drei Screenshots gemacht werden. Erstellen Sie diese erst **nachdem** Sie **alle** Schritte des Labs erfolgreich durchgeführt haben (Beispiele sehen Sie weiter unten).
| Zugehörige Elemente | Netzwerkschema |
|:--------|:------|
| - Zwei Availability Zones (A + B)
- In jeder AZ je ein Public- und ein Private Subnet
- Je eine Public- und eine Private Route Table
- Internet Gateway in der Public Route Table
- NAT Gateway in der Private Route Table
- Security Group (HTTP Inbound Rule)
- Web-Server im Public-2 Netzwerk.
- IP-Adresse im Range: **10.0.2.x**
| ![Schema](./x_res/01_VPC-Lab_600.png) |
#### Ziel der Übung
:bell: Sie sind in der Lage, folgende Tasks selbständig durchzuführen:
- Eine Virtual Private Cloud (VPC) erstellen.
- Private und öffentliche Subnetze in einer VPC aufsetzen.
- Konfigurieren und Anpassen einer Security Group.
- Starten einer EC2-Instanz innerhalb dieser VPC.
##### Leistungsnachweis
- [ ] Printscreen WebServer-Instanz **Tab Networking** (Private IPv4 Adresse beginnend mit **10.0.2.**).
- [ ] Printscreen Webserver-Instanz **URL mit Public DNS**.
- [ ] Printscreen **Load Test** mit 100% CPU Load.
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert.
- [ ] Fachgespräch mit Coach.
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
##### Beispiel-Abgabe:
- Screenshots der drei URLs:
Interne IP-Adresse beginnend mit 10.0.2 | Public DNS | Load Test
:---:|:---:|:---:|
![Interne IP-Adresse](./x_res/06_VPC-Lab_Resultat_IP_400.png) | ![Public DNS](./x_res/04_VPC-Lab_Resultat_400.png) | ![Load Test](./x_res/05_VPC-Lab_Resultat_Load_400.png)
---
### B) Eigene VPC mit je zwei Public- und Private Subnets in zwei verschiedenen Availability Zones erstellen
#### Ausgangslage:
:bookmark: In dieser Übung nutzen Sie das **Learner Lab**. Sie erstellen wiederum eine VPC (Virtual Private Cloud) - oder ihr persönliches **Virtuelles Datacenter** - mit je zwei Public- und Private Subnets in zwei verschiedenen Availability Zones. Die Konfiguration sieht **fast** gleich aus wie die der letzten Übung. Es gibt allerdings ein paar **wesentliche** Unterschiede. Diese VPC bleibt auch nach dem stoppen des Labs bestehen und kann für weitere Übungen genutzt werden.
Ausserdem gibt es bei diesem Lab noch ein paar neue Bedingungen bzgl. Namenskonvention, die Sie für den erfolgreichen Leistungsnachwei erfüllen müssen.
Name Ihrer VPC: **M346-XXX-VPC**
> _- Den Platzhalter **XXX** ersetzen Sie mit den ersten drei Buchstaben Ihres Nachnamens (Beispiel **M346_CAL-VPC**) - CAL steht hier für Calisto. Dasselbe gilt auch unten._
:warning: **Hinweis:**
Diese **VPC** (eigentlich vergleichbar mit einem virtuellen Datacenter) wird so konfiguriert, dass Sie in der nächsten Übung Instanzen im Public und im Privaten Subnet erstellen können. Während die eine Instanz von aussen zugänglich ist, kann die interne nur über die interne Adresse erreicht werden. Sie nutzen dafür ihre Subnet-Kenntnisse von früheren Modulen und Labs. Wie bereits im ersten KN05-Lab, erstellen Sie in Ihrer **neuen VPC** also ebenfalls eine **eigene Route-Table** für die privaten Subnetze (interner Datenverkehr) und einen **Internet-Gateway** für die public Subnetze (Zugang von und nach aussen).
| **AZ1** (Availability Zone 1) | **AZ2** (Availability Zone 2) |
|:--------|:------|
| - AZ1: **us-east-1a**
- Name Public Subnet 1: **M346-XXX-Public-1A**
- IPv4 CIDR Block: **10.0.1.0 /24**
- Name Private Subnet 1: **M346-XXX-Private-1A**
- IPv4 CIDR Block: **10.0.3.0 /24**
| - AZ2: **us-east-1b**
- Name Public Subnet 2: **M346-XXX-Public-1B**
- IPv4 CIDR Block: **10.0.2.0 /24**
- Name Private Subnet 1: **M346-XXX-Private-1B**
- IPv4 CIDR Block: **10.0.4.0 /24**
|
Die genauen Angaben finden Sie in [Diesem Markdown-File](./x_res/custom-vpc.md). Es ist sicherlich sinnvoll, wenn Sie dieses zuerst korrekt ergänzen (gem. Namenskonvention oben), um später beim Lab die **VPC** möglichst fehlerfrei aufzusetzen.
##### Netzwerkschema
![Schema](./x_res/10_VPC_1000.png) |
#### Anleitung:
In diesem Kapitel wird erklärt, wie man eine **VPC** erstellt und darin **ein** Subnet anlegt. Drei weitere Subnets erstellen Sie selbständig gemäss Anforderungen.
:warning: **Empfehlung:**
Bitte konsultieren Sie in diesem Lab-Challenge die unten verlinkte Konfigurationsdatei. Hier sind sämtliche Informationen vorbereitet, die Sie für ein erfolgreiches Setup benötigen. Gewisse Inhalte müssen vorher aber noch von Ihnen angepassst werden. Deshalb bitte vor dem Start:
- [Konfigurationsdatei](./x_res/custom-vpc.md) downloaden
- Fehlende Informationen ergänzen (XXX ersetzen mit ersten drei Buchstaben Ihres Nachnamens)
- Modifizierte Konfigurationsdatei abspeichern und bereithalten für das Setup in ihrem Lab.
##### Schritt 1: VPC erstellen
Als erstes erstellen Sie eine **VPC** (Virtual Private Cloud) mit folgender Kenngrösse:
> Netzwerk-ID: **10.0.0.0**
> CIDR **/16**
1. Öffnen Sie die [AWS Management Console](https://aws.amazon.com/console/).
2. Navigieren Sie gemäss Bildreihenfolge via Suchleiste zu **Create VPC**.
3. In der Suchleiste "VPC" eingeben -> :mag_right: [Originalbild][11b] _(oder unten auf erstes Bild klicken)_
4. In der **Navigation Pane** "Your VPC" wählen -> :mag_right: [Originalbild][12b] _(oder unten auf zweites Bild klicken)_
5. Template "Create VPC" öffnet sich -> :mag_right: [Originalbild][13b] _(oder unten auf drittes Bild klicken)_
**3.** Schritt: In der Suchleiste "VPC" eingeben | **4.** Schritt: Navigation Pane - "Your VPC" wählen | **5. Schritt**: Template "Create VPC" öffnet sich
:---:|:---:|:---:|
[![VPC][11a]][11b] | [![Your VPC][12a]][12b] | [![Create VPC 1][13a]][13b]
6. Füllen Sie die Felder gemäss Namens- und Netzwerkkonvention (siehe Netzwerkplan oben) aus.
7. Erstellen Sie die VPC mit "Create VPC"
**6.** Schritt: VPC-Name & Netzwerk-ID / CIDR eintragen | **7.** Schritt: VPC erstellen
:----:|:---:
![Create VPC 2](./x_res/14_VPC-create_600.png) | ![Create VPC 3](./x_res/15_VPC-create_600.png)
8. Resultat
**8.** Mitteilung mit grünem Hintergrund: Created successfully |
:---:
![Schema](./x_res/16_VPC-create_1200.png) |
##### Schritt 2: Subnets in der neuen VPC erstellen
In der neuen VPC erstellen Sie nun je **2 Private-** und **2 Public Subnets** (insgesamt 4 Subnets).
Das Erstellen des ersten Subnets wird unten beschrieben. Die restlichen Subnets erstellen Sie wiederum gemäss [dieser Konfigurationsdatei](./x_res/custom-vpc.md)
1. Unter "Virtual Private Cloud" "Subnets" auswählen.
2. Subnet mit "Create subnet" erstellen.
**1.** Schritt: "Subnets" auswählen - **2.** Schritt: "Create subnet" anklicken |
:---:
![Schema](./x_res/17_Subnet_create_1200.png) |
3. Richtige VPC auswählen
4. Subnet konfigurieren
**3.** Schritt: Richtige VPC auswählen | **4.** Schritt: 1. Subnet konfigurieren
:----:|:---:
![Create Subnet 1](./x_res/18_Subnet_create_600.png) | ![Create Subnet 2](./x_res/19_Subnet_create_600.png)
5. ...erstellen Sie nun noch die 3 anderen Subnets gemäss [dieser Konfigurationsdatei](./x_res/custom-vpc.md).
6. Resultat
**6.** Schritt: Ansicht der erzeugten Subnetze (nach Namen sortiert) |
:---:
![Schema](./x_res/20_Subnet_create_1200.png) |
##### Schritt 3: Route Table Configuration
Nun geht es darum, die Route Tables für die Public- und die Private-Subnets zu definieren. Beim Erstellen einer VPC wird **immer** auch gleichzeitig eine **Public Route Table** erstellt. Diese ist grundsätzlich vergleichbar mit einem **Router**, allerdings noch nicht fertig konfiguriert. Dieser **Virtuelle Router** ist physikalisch nicht sichtbar und wir können auch nicht z.B. via SSH darauf zugreifen. Wir können allerdings sogenannte **Routing Rules** (Routing Regeln) definieren. Das entspricht dann grundsätzlich genau demselben Prinzip wie **statische-** und **dynamische Routen** zu erstellen (später mehr dazu).
Weil wir später noch eine **Private Route Table** erstellen werden, geben wir der bestehenden **Public Route Table** mal zuerst einen Namen. Dies ist der einzige Wert, der nicht in der [Konfigurationsdatei](./x_res/custom-vpc.md) definiert wurde. Weil da aber der Name der später folgenden **Private Route Table** bereits definiert wurde, können wir den Namen davon ableiten. Im Falle des Autors dieses Challenges, heisst die **Public Route Table** **`M346-CAL-Public-RT`** und wird wie folgt eingetragen.
1. **Public Route Table**: Namen zuweisen
**1.** Schritt: Public Router mit einem Namen versehen - Gemäss Konvention: M346-XXX-Public-RT |
:---:
![Public Router](./x_res/21_Public_Route-table_1200.png) |
2. **Public Route Table:** Beim Tab **Routes** ist erkennbar, dass die Destination **10.0.0.0/16** Status "Active" hat. Es ist allerdings noch **Kein** Gateway nach aussen definiert -> :mag_right: [Originalbild][22b] _(oder unten auf das **erste** Bild klicken)_
3. **Public Route Table:** Beim Tab **Subnet associations** ist erkennbar, dass es **noch keine** Subnet associations gibt. Später werden wir jeweils die **Private-** und **Public Subnets** zusammenlegen (Explicit subnet association). Erst wenn das geschehen ist, können wir die weiteren Routen legen und sicherstellen, dass diese für **alle** Subnets korrekt sind -> :mag_right: [Originalbild][23b] _(oder unten auf **zweite** Bild klicken)_.
**2.** Schritt: Route 10.0.0.0/16 ist aktiv | **3.** Noch keine "Subnet associations" per Default
:----:|:---:
[![Alt-Text][22a]][22b] | [![Alt-Text][23a]][23b]
:warning: **Hinweis:**
Falls Sie die Details auf den Bildern oben sehen wollen, können sie auf den jeweiligen Screenshot klicken. Dann erscheint das Originalbild.
5. Template "Create VPC" öffnet sich.
**3.** Schritt: In der Suchleiste "VPC" eingeben | **4.** Schritt: Navigation Pane - "Your VPC" wählen | **5. Schritt**: Template "Create VPC" öffnet sich
:---:|:---:|:---:|
[![VPC][11a]][11b] | [![Your VPC][12a]][12b] | [![Create VPC 1][13a]][13b]