Erstellen eines AWS Terraform VPC Schritt für Schritt

Wenn Sie AWS Virtual Private Cloud (VPC) einrichten müssen, können Sie dies über die AWS Management Console tun, aber die Automatisierung macht viel mehr Spaß! In einem DevOps-Szenario ist der Aufbau von AWS-Services über Tools wie Terraform ein skalierbarerer und automatisierterer Ansatz zur Bereitstellung von Cloud-Ressourcen.

In diesem Tutorial erfahren Sie, wie Sie eine Terraform-Konfiguration erstellen und ausführen, um eine Terraform-VPC von Grund auf zu erstellen!

Voraussetzungen

Dieser Beitrag wird ein schrittweises Tutorial sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes bereit haben:

  • Terraform – Dieses Tutorial verwendet Terraform v0.14.9 unter Ubuntu 18.04.5 LTS, aber jedes Betriebssystem mit Terraform sollte funktionieren.
  • A code editor – Even though you can use any text editor to work with Terraform configuration files, you should have one that understands the HCL Terraform language. Try out Visual Studio (VS) Code.

Verständnis von AWS VPCs

Die AWS-Cloud verfügt über dutzende verschiedene Dienste für Computing, Speicherung, Netzwerke und mehr. Jeder dieser Dienste kann miteinander kommunizieren, ähnlich wie die Dienste eines On-Premises-Rechenzentrums. Allerdings sind diese Dienste unabhängig voneinander und nicht zwangsläufig von anderen Diensten isoliert. Das ändert sich mit der AWS VPC.

Eine AWS VPC ist ein einzelnes Netzwerk, das es Ihnen ermöglicht, AWS-Dienste in einem isolierten Netzwerk zu starten. Technisch gesehen ist eine AWS VPC fast das Gleiche wie der Besitz eines Rechenzentrums, jedoch mit integrierten zusätzlichen Vorteilen wie Skalierbarkeit, Ausfallsicherheit, unbegrenztem Speicherplatz usw.

AWS VPC architecture

AWS VPCs sind regional beschränkt. Es ist nicht möglich, eine VPC über Regionen hinweg zu erstellen, wobei bis zu fünf VPCs pro Region unterstützt werden.

Erstellen der Terraform-Konfiguration für eine AWS VPC

Genug geredet, lassen Sie uns mit dem Aufbau beginnen!

1. Erstellen Sie zunächst einen Ordner, um Ihre Terraform-Konfigurationsdateien darin zu speichern. In diesem Tutorial wird ein Ordner mit dem Namen terraform-vpc-demo im Home-Verzeichnis erstellt.

mkdir ~/terraform-vpc-demo
 cd ~/terraform-vpc-demo

2. Öffnen Sie Ihren bevorzugten Code-Editor und kopieren Sie den folgenden bereits für Sie erstellten Konfigurationscode. Speichern Sie die Datei als main.tf im Verzeichnis ~/terraform-vpc-demo. Informationen zu jedem zu erstellenden Ressourcen sind direkt im Code enthalten.

Die Datei main.tf enthält alle Ressourcen, die bereitgestellt werden müssen.

Terraform verwendet verschiedene Arten von Konfigurationsdateien. Jede Datei ist entweder im Klartextformat oder JSON-Format geschrieben. Sie haben eine spezifische Namenskonvention entweder im .tf oder .tfjson-Format.

Die folgende Terraform-Konfiguration:

  • Erstellt ein VPC
  • Erstellt ein Internet Gateway und verbindet es mit dem VPC, um den Verkehr innerhalb des VPCs für die Außenwelt erreichbar zu machen.
  • Erstellt ein öffentliches und privates Subnetz

Subnetze sind Netzwerke innerhalb von Netzwerken. Sie sind darauf ausgelegt, den Netzwerkverkehr effizienter zu gestalten und kleinere, besser verwaltbare ‚Chunks‘ von IP-Adressen bereitzustellen

  • Erstellt eine Routing-Tabelle für die öffentlichen und privaten Subnetze und verknüpft die Tabelle mit beiden Subnetzen
  • Erstellt ein NAT Gateway, um privaten Subnetzen das Erreichen des Internets zu ermöglichen, ohne dass jedem Ressourcentyp eine extern routbare IP-Adresse zugewiesen werden muss.
Create the VPC
 resource "aws_vpc" "Main" {                # Erstellen einer VPC hier
   cidr_block       = var.main_vpc_cidr     # Festlegen des CIDR-Blocks Verwendung von 10.0.0.0/24 für Demo
   instance_tenancy = "default"
 }
 Create Internet Gateway and attach it to VPC
 resource "aws_internet_gateway" "IGW" {    # Erstellen eines Internet-Gateways
    vpc_id =  aws_vpc.Main.id               # vpc_id wird generiert, nachdem wir die VPC erstellt haben
 }
 Create a Public Subnets.
 resource "aws_subnet" "publicsubnets" {    # Erstellen von öffentlichen Subnetzen
   vpc_id =  aws_vpc.Main.id
   cidr_block = "${var.public_subnets}"        # CIDR-Block der öffentlichen Subnetze
 }
 Create a Private Subnet                   # Erstellen von privaten Subnetzen
 resource "aws_subnet" "privatesubnets" {
   vpc_id =  aws_vpc.Main.id
   cidr_block = "${var.private_subnets}"          # CIDR-Block der privaten Subnetze
 }
 Route table for Public Subnet's
 resource "aws_route_table" "PublicRT" {    # Erstellen von RT für öffentliches Subnetz
    vpc_id =  aws_vpc.Main.id
         route {
    cidr_block = "0.0.0.0/0"               # Verkehr vom öffentlichen Subnetz erreicht das Internet über das Internet-Gateway
    gateway_id = aws_internet_gateway.IGW.id
     }
 }
 Route table for Private Subnet's
 resource "aws_route_table" "PrivateRT" {    # Erstellen von RT für privates Subnetz
   vpc_id = aws_vpc.Main.id
   route {
   cidr_block = "0.0.0.0/0"             # Verkehr vom privaten Subnetz erreicht das Internet über das NAT-Gateway
   nat_gateway_id = aws_nat_gateway.NATgw.id
   }
 }
 Route table Association with Public Subnet's
 resource "aws_route_table_association" "PublicRTassociation" {
    subnet_id = aws_subnet.publicsubnets.id
    route_table_id = aws_route_table.PublicRT.id
 }
 Route table Association with Private Subnet's
 resource "aws_route_table_association" "PrivateRTassociation" {
    subnet_id = aws_subnet.privatesubnets.id
    route_table_id = aws_route_table.PrivateRT.id
 }
 resource "aws_eip" "nateIP" {
   vpc   = true
 }
 Creating the NAT Gateway using subnet_id and allocation_id
 resource "aws_nat_gateway" "NATgw" {
   allocation_id = aws_eip.nateIP.id
   subnet_id = aws_subnet.publicsubnets.id
 }

3. Erstellen Sie nun eine weitere Datei im Verzeichnis ~/terraform-vpc-demo, benennen Sie sie vars.tf und fügen Sie den folgenden Inhalt ein.

Vars.tf ist eine Terraform-Variablen-Datei, die alle Variablen enthält, auf die die Konfigurationsdatei verweist.

Sie können Variablenverweise in der Konfigurationsdatei sehen durch:

  • var.region
  • var.main_vpc_cidr
  • var.public_subnets
  • var.private_subnets
variable "region" {}
 variable "main_vpc_cidr" {}
 variable "public_subnets" {}
 variable "private_subnets" {}

Es ist möglich, alle Konfigurationswerte in einer einzigen Konfigurationsdatei aufzunehmen. Um die Dinge übersichtlich zu halten und es für Entwickler und Administratoren einfacher zu machen, ist es wichtig, die Dinge aufzuteilen.

4. Erstellen Sie eine weitere Datei im Verzeichnis ~/terraform-vpc-demo, fügen Sie den folgenden Code ein und benennen Sie ihn als provider.tf, um den AWS-Anbieter zu definieren. Das Tutorial erstellt Ressourcen in der Region us-east-2.

Die Anbieterdatei definiert Anbieter wie AWS, Oracle oder Azure usw., damit Terraform eine Verbindung zu den richtigen Cloud-Diensten herstellen kann. provider "aws" { region = "us-east-2" }

provider "aws" {
   region = "us-east-2"
 }

5. Erstellen Sie schließlich eine weitere Datei im Verzeichnis ~/terraform-vpc-demo, benennen Sie sie terraform.tfvars, und fügen Sie den folgenden Code ein. Diese Variablen datei enthält die Werte, die Terraform verwenden wird, um die Variablenverweise in der Konfigurationsdatei zu ersetzen.

main_vpc_cidr = "10.0.0.0/24"
 public_subnets = "10.0.0.128/26"
 private_subnets = "10.0.0.192/26"

Öffnen Sie nun Ihr bevorzugtes Terminal (in diesem Fall Bash) und überprüfen Sie, ob alle erforderlichen Dateien im Ordner enthalten sind, indem Sie den Befehl tree ausführen.

tree terraform-vpc-demo  
Folder structure of terraform files

Ausführen von Terraform zur Erstellung des AWS VPC

Nun, da Sie die Terraform-Konfigurationsdatei und die Variablen-Dateien bereit haben, ist es an der Zeit, Terraform zu initiieren und das VPC zu erstellen! Zur Bereitstellung verwendet Terraform in der Regel einen dreistufigen Ansatz terraform initterraform planterraform apply. Lassen Sie uns jetzt jeden Schritt durchgehen.

1. Öffnen Sie ein Terminal und wechseln Sie zum Verzeichnis ~\terraform-vpc-demo.

cd ~\terraform-vpc-demo

2. Führen Sie den Befehl terraform init im gleichen Verzeichnis aus. Der terraform init-Befehl initialisiert die Plugins und Provider, die zum Arbeiten mit Ressourcen erforderlich sind.

terraform init

Wenn alles gut geht, sollten Sie die Meldung Terraform wurde erfolgreich initialisiert in der Ausgabe sehen, wie unten gezeigt.

Terraform initialized successfully

3. Führen Sie jetzt den Befehl terraform plan aus. Dies ist eine optionale, aber empfohlene Aktion, um sicherzustellen, dass die Syntax Ihrer Konfiguration korrekt ist und Ihnen einen Überblick darüber gibt, welche Ressourcen in Ihrer Infrastruktur bereitgestellt werden. terraform plan

terraform plan

Wenn erfolgreich, sollten Sie eine Nachricht wie Plan: "X" hinzufügen, "Y" ändern oder "Z" zerstören in der Ausgabe sehen, um anzuzeigen, dass der Befehl erfolgreich war. Sie werden auch jede AWS-Ressource sehen, die Terraform zu erstellen beabsichtigt.

Plan command execution

4. Als Nächstes, sagen Sie Terraform, es soll tatsächlich die AWS VPC und Ressourcen mit terraform apply bereitstellen. Wenn Sie terraform apply aufrufen, wird Terraform die Konfiguration (main.tf) und die anderen Dateien lesen, um eine Konfiguration zu kompilieren. Dann wird diese Konfiguration als Anweisungen zum Aufbau des VPC und anderer Komponenten an AWS gesendet.

terraform apply
Terraform apply command execution

Beachten Sie die in der Terraform-Ausgabe definierten IDs. Diese IDs benötigen Sie, um die im nächsten Abschnitt erstellten Ressourcen zuzuordnen.

Der Terraform-Befehl wurde erfolgreich ausgeführt, also wechseln wir nun zum AWS Management Console, um zu bestätigen, dass der VPC und die Komponenten erfolgreich erstellt wurden.

Verifizierung des AWS Terraform VPC

Bis jetzt sollten Sie den VPC mit Terraform erstellt haben. Lassen Sie uns dies überprüfen, indem wir manuell im AWS Management Console nach dem VPC suchen.

1. Öffnen Sie Ihren Lieblingswebbrowser und navigieren Sie zur AWS Management Console und melden Sie sich an.

2. Während Sie in der Konsole sind, klicken Sie auf die Suchleiste oben, suchen Sie nach ‘vpc’ und klicken Sie auf das VPC-Menüelement.

Navigating to the VPC service

3. Einmal auf der VPC-Seite, klicken Sie auf Ihre VPCs. Sie sollten den VPC sehen, der mit derselben ID erstellt wurde, die Terraform zuvor zurückgegeben hat.

VPC created

4. Da Terraform nicht nur die VPC-Ressource, sondern auch alle für die VPC erforderlichen Ressourcen erstellt hat, sollten Sie auf dieser Seite auch jede Ressource finden.

Subnets created
Route tables created
Internet Gateway created
NAT Gateway created

Mit allen erfolgreich erstellten Komponenten ist diese VPC mithilfe von Terraform einsatzbereit!

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie Terraform verwenden, um eine AWS VPC und ihre Komponenten bereitzustellen.

Das Erstellen einer Amazon Virtual Private Cloud mit Terraform ermöglicht es Ihnen, Ressourcen schnell, einfach und vorhersehbar zu erstellen. Sie sind nun bereit, dieses Wissen mit anderen AWS-Diensten zu nutzen und leistungsstarke Services darauf aufzubauen.

Source:
https://adamtheautomator.com/terraform-vpc/