Für diese Aufgaben baust du auf deinem Modul aus 415 auf.
Erstelle auch wieder für die einzelnen Aufgaben jeweils einen Merge Request.
Note
Die Beispiele hier dienen nicht unbedingt einem praxisrelevantem Setup, sondern sind dazu da, damit du einige Features verwenden kannst und einige der Probleme siehst, die beim Erstellen von Setups mit ASG auftreten können.
Ersetze deine "statisch" erstellten EC2 Instanzen durch eine Autoscaling Group. Auch hier soll die Amazon Linux 2 AMI verwendet werden und die zuvor erstellte Role assigned werden. Die Autoscaling Group soll spot instances verwenden. Die ec2_instances
variable wird obsolet und durch asg_min
, asg_max
, asg_desired
und asg_instance_types
(list) parameter ersetzt. Die asg_instance_types
list soll daraufhin geprüft werden, dass nur valide t3
und t3a
Instanztypen erlaubt werden.
Erstelle dir ein public Github Repository mit Ansible Code. Das Repository soll ein Playbook enthalten, dass Nginx installiert. Das Playbook soll via cloudinit Show archive.org snapshot angewendet werden.
Füge einen ALB zu deinem Modul hinzu. Erstelle eine Targetgroup, die den Traffic auf Port 80 zu deinen EC2 Instanzen forwarded. Die Targetgroup soll an deinem ALB verwendet werden. Konfiguriere die Security Groups so, dass der Traffic funktioniert. Du solltest nun deinen Nginx über den ALB erreichen können.
Erweitere dein Ansible Playbook so, dass beim ausführen Dateien aus deinem S3 Bucket in das Webroot von deinem Nginx default vhost kopiert werden. Der Name des S3 Buckets darf natürlich nicht direkt im Ansible Code vermerkt sein, sondern muss beim Aufruf übergeben werden. Wenn es in dem S3 Bucket noch keine index.html
gibt, soll Ansible diese erstellen.
Füge eine RDS Instanz mit PostgreSQL
hinzu. Konfiguriere die Security Groups so, dass von deinen EC2 Instanzen in der ASG darauf zugegriffen werden kann. Teste die Verbindung manuell.
Entferne die asg_instance_types
und ersetze sie durch eine variable, die ein object
zur Beschreibung von Instanzen enthält, die anschließend automatisch ausgewählt werden sollen. Das Objekt soll folgende Felder enthalten:
vcpu_count
: Objekt mit einem min
und max
key für die Anzahl der CPUs der Instanz.memory_mib
: Objekt mit min
und max
key für den Speicher der VM in Megabyte.excluded_instance_types
: List aus allen Instanzen, die bei der Auswahl nicht verwendet werden sollen.Verwende das
Instance Requirements
Show archive.org snapshot
Feature vom Lauch Template um die Instanzen auszuwählen. Es müssen weiterhin Spot Instances in der ASG verwendet werden.
Tipp: Wenn du Probleme hast das umzusetzen, versuche dir das ganze mal in der AWS Console (UI) anzusehen. Das gibt dir vielleicht einen wertvollen Hinweis.