415 Managen von AWS EC2 Ressourcen mit Terraform [2 PT]

Updated . Posted . Visible to the public.

Ziele

  • Du hast alle Aufgaben der Card erfüllt

Inhalte

Aufgaben

Um die Aufgaben zu erfüllen, brauchst Zugriff auf einen AWS Account. Du solltest aus den vorherigen Kapiteln bereits Zugriff zu einem Account haben.
Außerdem solltest du den hier erstellten Code in einem Git Repository pflegen. Bitte erstelle für die einzelnen Aufgaben jeweils Merge Requests und weise diese deinem Mentor zu.

  1. Konfiguriere die AWS-CLI. Du solltest ein Profil für deinen "Elternaccount" haben und eines für einen deiner "Kindaccounts". Du solltest den "Kind" Account für alle deine Terraform Aufgaben verwenden.
  2. Erstelle ein eigenes Terraform Modul das folgende Kriterien erfüllt:
  • Provider ist AWS
  • Als input kann die AWS Region angegeben werden
  • Es wird ein S3 Bucket ohne Public access erstellt
  • Wende das Modul für die Region eu-west-1 an
  1. Füge zu deinem Modul das managen eines VPC hinzu. Das VPC soll jeweils 3 Public und 3 Private Subnetze (je eines für 1 AZ) aber nur 1 public NAT Gateway haben. Die 3 Private Subnetze sollen Internet Zugriff haben.

  2. Erweitere dein Terraform modul um einen input mit type map und dem Namen ec2_instances, welcher folgendes Schema aufweist:

    {
      "name1" = {
        instance_type = <ec2_instance_type>
        disk_size = <disk_size>
      }
    }
    

    Stelle sicher, dass man bei instance_type nur t3 und t3a Instanzen konfigurieren kann und dass es die Instanztypen auch wirklich gibt. Aus der ec2_instances configmap werden mehrere EC2 Instanzen erstellt und die entsprechenden Konfigurationsparameter für instance_type und disk_size unterstützt. Verwende ein Amazon Linux 2 AMI und starte die Instanzen in einem Private Subnet des zuvor erstellten VPCs.

  3. Da dein Modul das Konfigurieren von unterschiedlichen Regionen erlaubt, sollte die richtige AMI ID automatisch ausgewählt werden. Du kannst dafür die aws_ami Show archive.org snapshot datasource verwenden.

  4. Füge eine neue Role hinzu, die eine Policy erhält damit du den SSM Session Manager Show archive.org snapshot verwenden kannst. Außerdem erstellst du eine Policy, die r/w Zugriff auf das zuvor erstellte S3 Bucket erlaubt und weist sie der Role zu. Die Role soll an die von dir erstellten EC2 Instanzen zugewiesen werden.
    Anschließend verbindest du dich per SSM auf deine Instanzen und testest den S3 Zugriff mit der aws-cli.

  5. Deprovisioniere deine Infrastruktur mit terraform destroy.

Claus-Theodor Riegg
Last edit
Simon Hofmann
License
Source code in this card is licensed under the MIT License.
Posted by Claus-Theodor Riegg to DevOps Curriculum (2022-12-02 11:10)