Voraussetzungen
Sie verfügen über ein AWS-Konto
Terraform muss auf dem lokalen Computer installiert sein
Grundkenntnisse in AWS und Terraform
Einrichtung eines AWS-Kontos
Bevor wir beginnen, müssen wir unser AWS-Konto einrichten, damit wir es mit Terraform verwenden können. Dazu müssen wir eine neue Sicherheitsgruppe und eine neue VPC erstellen.
Erstellen Sie eine neue Sicherheitsgruppe
„Bash
> [!IMPORTANT]
> Stellen Sie sicher, dass Ihr AWS-Konto über die entsprechenden Berechtigungen zum Erstellen von Ressourcen verfügt.
„
„hcl
Ressource „aws_security_group“ „my_security_group“ {
name = „meine_sicherheitsgruppe“
description = „Meine Sicherheitsgruppe für die VPC“
# Einreisebestimmungen
Eingang {
from_port = 22
to_port = 22
Protokoll="tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# Ausgangsregeln
Ausgang {
from_port = 0
to_port = 0
Protokoll="-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
„
Erstellen Sie eine neue VPC
„hcl
Ressource „aws_vpc“ „my_vpc“ {
cidr_block = "10.0.0.0/16"
Tags = {
Name = „Meine VPC“
}
}
„
Erstellung des zugrunde liegenden Netzwerks
Sobald wir die VPC erstellt haben, können wir das zugrunde liegende Netzwerk erstellen. Dazu müssen wir ein neues Subnetz und eine neue Routing-Tabelle erstellen.
Erstellen Sie ein neues Subnetz
„hcl
Ressource „aws_subnet“ „my_subnet“ {
cidr_block = "10.0.1.0/24"
vpc_id = aws_vpc.my_vpc.id
Availability_zone = "us-west-2a"
Tags = {
Name = „Mein Subnetz“
}
}
„
Erstellen Sie eine neue Routing-Tabelle
„hcl
Ressource „aws_route_table“ „my_route_table“ {
vpc_id = aws_vpc.my_vpc.id
Tags = {
Name = „Meine Routing-Tabelle“
}
}
„
Sicherheitsnetzwerkeinstellungen
Sobald wir das zugrunde liegende Netzwerk erstellt haben, können wir das Sicherheitsnetzwerk konfigurieren. Dazu müssen wir eine neue Sicherheitsregel erstellen und diese dem Subnetz zuordnen.
Erstellen Sie eine neue Sicherheitsregel
„hcl
Ressource „aws_security_group_rule“ „my_security_rule“ {
Typ = „Eintrag“
from_port = 22
to_port = 22
Protokoll="tcp"
source_security_group_id = aws_security_group.my_security_group.id
security_group_id = aws_security_group.my_security_group.id
}
„
Verknüpfen Sie die Sicherheitsregel mit dem Subnetz
„hcl
Ressource „aws_route_table_association“ „my_route_association“ {
subnet_id = aws_subnet.my_subnet.id
route_table_id = aws_route_table.my_route_table.id
}
„
Datennetzwerkkonfiguration
Sobald wir das Sicherheitsnetzwerk konfiguriert haben, können wir das Datennetzwerk konfigurieren. Dazu müssen wir eine neue EC2-Instanz erstellen und diese dem Subnetz zuordnen.
Erstellen Sie eine neue EC2-Instanz
„hcl
Ressource „aws_instance“ „my_ec2_instance“ {
ami="ami-abc123"
Instanz_Typ = „t2.micro“
vpc_security_group_ids = [aws_security_group.my_security_group.id]
subnet_id = aws_subnet.my_subnet.id
}
„
Ordnen Sie die EC2-Instanz dem Subnetz zu
„hcl
Ressource „aws_network_interface_attachment“ „my_network_association“ {
Instanz_id = aws_instance.my_instance_ec2.id
network_interface_id = aws_network_interface.my_network.id
Geräteindex = 0
}
„
Konfiguration des Speichernetzwerks
Sobald wir das Datennetzwerk konfiguriert haben, können wir das Speichernetzwerk konfigurieren. Dazu müssen wir ein neues EBS-Volume erstellen und es an die EC2-Instanz anhängen.
Erstellen Sie ein neues EBS-Volume
„hcl
Ressource „aws_ebs_volume“ „my_ebs_volume“ {
Availability_zone = "us-west-2a"
Größe = 10
}
„
Hängen Sie das EBS-Volume an die EC2-Instanz an
„hcl
Ressource „aws_volume_attachment“ „my_ebs_association“ {
Gerätename = "/dev/sdh"
volume_id = aws_ebs_volume.my_ebs_volume.id
Instanz_id = aws_instance.my_instance_ec2.id
}
„
Netzwerkeinstellungen umleiten
Sobald wir das Speichernetzwerk konfiguriert haben, können wir das Umleitungsnetzwerk konfigurieren. Dazu müssen wir eine neue Umleitungsgruppe erstellen und diese der EC2-Instanz zuordnen.
Erstellen Sie eine neue Umleitungsgruppe
„hcl
Ressource „aws_lb_target_group“ „my_redirect_group“ {
name = „meine-Gruppenweiterleitung“
Port = 80
Protokoll = „HTTP“
vpc_id = aws_vpc.my_vpc.id
}
„
Ordnen Sie die Umleitungsgruppe der EC2-Instanz zu
„hcl
Ressource „aws_lb_target_group_attachment“ „my_association_redirect“ {
target_group_arn = aws_lb_target_group.my_group_redirection.arn
target_id = aws_instance.my_ec2_instance.id
Port = 80
}
„
Ausgleichende Netzwerkkonfiguration
Sobald wir das Umleitungsnetzwerk konfiguriert haben, können wir das Ausgleichsnetzwerk konfigurieren. Dazu müssen wir eine neue Ausgleichsgruppe erstellen und diese mit der EC2-Instanz verknüpfen.
Erstellen Sie eine neue Bilanzgruppe
„hcl
Ressource „aws_lb“ „my_balancing_group“ {
name = „meine-ausgleichsgruppe“
intern = falsch
Load_balancer_type = "Anwendung"
security_groups = [aws_security_group.my_security_group.id]
Subnetze = [aws_subnet.my_subnet.id]
}
„
Ordnen Sie die Ausgleichsgruppe der EC2-Instanz zu
„hcl
Ressource „aws_lb_listener“ „my_balancing_association“ {
Load_balancer_arn = aws_lb.my_balancer_group.arn
Protokoll = „HTTP“
Port = 80
default_action {
type = "weiterleiten"
target_group_arn = aws_lb_target_group.my_group_redirection.arn
}
}
„
Überwachung der Netzwerkkonfiguration
Sobald wir das Ausgleichsnetzwerk konfiguriert haben, können wir das Überwachungsnetzwerk konfigurieren. Dazu müssen wir eine neue Überwachungsgruppe erstellen und diese der EC2-Instanz zuordnen.
Erstellen Sie eine neue Überwachungsgruppe
„hcl
Ressource „aws_cloudwatch_metric_alarm“ „my_monitoring_group“ {
alarm_name = „meine-überwachungsgruppe“
vergleichen_operator = "GreaterThanOrEqualToThreshold"
Evaluation_periods = „1“
metric_name = "CPUUtilization"
namespace = „AWS/EC2“
Zeitraum = „300“
Statistik = „Durchschnitt“
Schwelle = „80“
actions_enabled = true
alarm_actions = [aws_sns_topic.mi_topic.arn]
}
„
Ordnen Sie die Überwachungsgruppe der EC2-Instanz zu
„hcl
Ressource „aws_sns_topic“ „my_topic“ {
name = „mein-thema“
}
„
Fazit
In diesem Artikel haben wir gesehen, wie man mit Terraform ein VPC-Netzwerk in AWS entwirft. Wir haben eine neue VPC, ein neues Subnetz, eine neue Routing-Tabelle, eine neue Sicherheitsregel, eine neue EC2-Instanz, ein neues EBS-Volume, eine neue Umleitungsgruppe, eine neue Ausgleichsgruppe und eine neue Überwachungsgruppe erstellt.