GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen Sie mit Terraform eine Virtual Private Cloud (VPC) auf AWS

In diesem Artikel zeige ich Ihnen, wie Sie eine VPC zusammen mit Subnetzen, Internet-Gateway, NAT-Gateways und Routing-Tabellen erstellen. Wir werden 1 VPC mit 4 Subnetzen erstellen:2 private und 2 öffentliche, 2 NAT-Gateways, 1 Internet-Gateway und 4 Routing-Tabellen.

Bevor ich fortfahre, gehe ich davon aus, dass Sie ein grundlegendes Verständnis von Terraform und VPC auf AWS haben. Um mehr über die VPC und ihre Erstellung über die AWS-Konsole zu erfahren, klicken Sie hier und um die Grundlagen von Terraform kennenzulernen, können Sie nach „Was ist Terraform und wie wird es auf der AWS EC2-Instanz installiert?“ suchen

Voraussetzungen

  1. Grundlegendes Verständnis von Terraform.
  2. Terraform auf Ihrem System installiert.
  3. AWS-Konto (erstellen, wenn Sie noch keins haben).
  4. 'access_key' &'secret_key' eines AWS IAM-Benutzers. (Klicken Sie hier, um zu erfahren, wie Sie einen IAM-Benutzer mit „access_key“ und „secret_key“ auf AWS erstellen, )

Was wir tun werden

  1. Schreiben Sie Terraform-Konfigurationsdateien zum Erstellen einer VPC mit anderen abhängigen Ressourcen.
  2. Erstellen Sie eine VPC und andere abhängige Ressourcen mithilfe der Terraform-Konfigurationsdateien
  3. Löschen Sie die erstellte VPC und andere abhängige Ressourcen mit Terraform

Schreiben Sie Terraform-Konfigurationsdateien zum Erstellen einer VPC mit anderen abhängigen Ressourcen.

Erstellen Sie ein dediziertes Verzeichnis, in dem Sie Terraform-Konfigurationsdateien erstellen können.

Verwenden Sie den folgenden Befehl, um ein Verzeichnis zu erstellen und Ihr aktuelles Arbeitsverzeichnis dorthin zu ändern.

mkdir terraform
cd terraform/

Ich verwende "vim" als Editor, um in Dateien zu schreiben. Sie können einen Editor Ihrer Wahl verwenden und die folgenden Konfigurationen kopieren und einfügen, um variables.tf, terraform.tfvars und main.tf

zu erstellen

Erstellen Sie „main.tf“, das für die Erstellung von VPC auf AWS mit den abhängigen Ressourcen verantwortlich ist. Diese main.tf liest Werte von Variablen aus variables.tf und terraform.tfvars.

vim main.tf 
provider "aws" { region ="${var.region}" access_key ="${var.access_key}" secret_key ="${var.secret_key}"}# VPC-Ressourcen:Dadurch wird 1 VPC mit 4 erstellt Subnetze, 1 Internet-Gateway, 4 Routing-Tabellen. Ressource "aws_vpc" "default" { cidr_block =var.cidr_block enable_dns_support =true enable_dns_hostnames =true}resource "aws_internet_gateway" "default" { vpc_id =aws_vpc.default.id}resource "aws_route_table" "private" { count =length(var. private_subnet_cidr_blocks) vpc_id =aws_vpc.default.id}resource "aws_route" "private" { count =length(var.private_subnet_cidr_blocks) route_table_id =aws_route_table.private[count.index].id destination_cidr_block ="0.0.0.0/0" nat_gateway_id =aws_nat_gateway .default[count.index].id}Ressource „aws_route_table“ „öffentlich“ { vpc_id =aws_vpc.default.id}Ressource „aws_route“ „öffentlich“ { route_table_id =aws_route_table.public.id destination_cidr_block =„0.0.0.0/0“ Gateway_id =aws_internet_gateway.default.id}Ressource „aws_subnet“ „private“ { count =length(var.private_subnet_cidr_blocks) vpc_id =aws_vpc.default.id cidr_block =var.private_subnet_cidr_blocks[count.index ] Availability_Zone =var.availability_zones[count.index]}resource "aws_subnet" "public" { count =length(var.public_subnet_cidr_blocks) vpc_id =aws_vpc.default.id cidr_block =var.public_subnet_cidr_blocks[count.index] Availability_zone =var.availability_zones [count.index] map_public_ip_on_launch =true}resource „aws_route_table_association“ „private“ { count =length(var.private_subnet_cidr_blocks) subnet_id =aws_subnet.private[count.index].id route_table_id =aws_route_table.private[count.index].id} resource "aws_route_table_association" "public" { count =length(var.public_subnet_cidr_blocks) subnet_id =aws_subnet.public[count.index].id route_table_id =aws_route_table.public.id}# NAT-Ressourcen:Dadurch werden 2 NAT-Gateways in 2 öffentlichen Subnetzen erstellt für 2 verschiedene private Subnets.resource „aws_eip“ „nat“ {count =length(var.public_subnet_cidr_blocks) vpc =true}resource „aws_nat_gateway“ „default“ {depends_on =[“aws_i nternet_gateway.default"] Anzahl =Länge (var.public_subnet_cidr_blocks) Zuweisungs-ID =aws_eip.nat[count.index].id subnet_id =aws_subnet.public[count.index].id}   

Erstellen Sie „variables.tf“, das die Deklaration und Definition der Variablen enthält.

vim variables.tf
variable „access_key“ { description =„Zugriffsschlüssel zur AWS-Konsole“ }variable „secret_key“ { description =„Geheimer Schlüssel zur AWS-Konsole“ }variable „region“ { default =„eu-west-3“ type =string description ="Region der VPC"}variable "cidr_block" { default ="10.0.0.0/16" type =string description ="CIDR block for the VPC"}variable "public_subnet_cidr_blocks" { default =["10.0.0.0/24 ", "10.0.2.0/24"] type =list description ="Liste der öffentlichen Subnetz-CIDR-Blöcke"}variable "private_subnet_cidr_blocks" { default =["10.0.1.0/24", "10.0.3.0/24"] type =list description ="Liste der privaten Subnetz-CIDR-Blöcke"}variable "availability_zones" { default =["eu-west-3a", "eu-west-3b"] type =list description ="Liste der Verfügbarkeitszonen"}  

Erstellen Sie „terraform.tfvars“, das die Definition der in der obigen Datei definierten access_key- und secret_key-Variablen enthält. Wir haben die Deklaration dieser beiden Variablen in der Datei 'terraform.tfvars' beibehalten.

Die folgenden Schlüssel müssen mit den Schlüsseln Ihres IAM-Benutzers geändert werden.

vim terraform.tfvars 
access_key ="AKIAQ6GAIA5XIHHM2GJM"secret_key ="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"

Jetzt sollten Sie 3 Dateien haben, nämlich variables.tf, terraform.tfvars und main.tf

Erstellen Sie eine VPC und andere abhängige Ressourcen mithilfe der Terraform-Konfigurationsdateien

Bevor Sie die folgenden Befehle ausführen, vergewissern Sie sich, dass Sie die gültigen access_key und secret_key konfiguriert haben.

Der erste zu verwendende Befehl ist „terraform init“. Dieser Befehl lädt Plugins für Anbieter, die in der Konfiguration verwendet werden, herunter und installiert sie. In unserem Fall ist es AWS.

terraform init

Der zweite zu verwendende Befehl ist „terraform plan“. Dieser Befehl wird verwendet, um die Änderungen anzuzeigen, die an der Infrastruktur stattfinden werden.

Terraformplan

Der Befehl „terraform apply“ erstellt die in der main.tf-Datei erwähnten Ressourcen auf AWS. Sie werden aufgefordert, Ihre Eingaben zum Erstellen der Ressourcen zu machen.

terraform anwenden

Wenn Sie den obigen Befehl ausführen, können Sie in der Ausgabe sehen, dass 20 neue Ressourcen hinzugefügt und 0 vernichtet wurden.

Sie können zur AWS VPC-Konsole gehen, um zu überprüfen, ob die VPC zusammen mit Subnetzen, Routingtabellen-NAT-Gateways und einem Internet-Gateway erstellt wurde.

Löschen Sie die erstellte VPC und andere abhängige Ressourcen mithilfe von Terraform

Wenn Sie Ressourcen, die Sie mit der in der main.tf-Datei erwähnten Konfiguration erstellt haben, nicht mehr benötigen, können Sie alle diese Ressourcen mit dem Befehl „Terraform Destroy“ löschen.

Terraform-Zerstörung

Wenn Sie den obigen Befehl ausführen, können Sie sehen, dass 20 erstellte Ressourcen in der Ausgabe zerstört werden. Sie können dasselbe überprüfen, indem Sie AWS im VPC-Dashboard besuchen.

Schlussfolgerung

In diesem Artikel haben wir die Schritte zum Erstellen einer VPC mit 4 Subnetzen, 4 Routing-Tabellen, 2 NAT-Gateways und 1 Internet-Gateway gesehen. Wir haben auch gesehen, wie die geschaffenen Ressourcen zerstört werden können.


Linux
  1. So erstellen Sie ein VPC-Netzwerk (Virtual Private Cloud) in GCP

  2. So konfigurieren Sie Ihre eigene VPC (Virtual Private Cloud) in AWS

  3. Erstellen Sie mit Terraform eine EC2-Instance auf AWS

  4. So erstellen Sie eine RDS-Instance auf AWS mit Terraform

  5. So erstellen Sie eine IAM-Rolle in AWS mit Terraform

Erstellen Sie virtuelle CD- und DVD-Laufwerke mit CDEmu unter Linux

Erstellen Sie eine virtuelle KVM-Maschine mit dem Qcow2-Image unter Linux

Erstellen Sie virtuelle NodeJS-Umgebungen mit Conda in Linux

Erstellen Sie virtuelle Rust-Umgebungen mit Conda in Linux

Erstellen Sie virtuelle Golang-Umgebungen mit Conda in Linux

Erstellen Sie ein Virtual HardDisk (VHD)-Volume mit einer Datei in Linux