Prérequis
Avoir un compte AWS
Avoir Terraform installé sur la machine locale
Connaissance de base d'AWS et Terraform
Configuration du compte AWS
Avant de commencer, nous devons configurer notre compte AWS afin de pouvoir l'utiliser avec Terraform. Pour ce faire, nous devons créer un nouveau groupe de sécurité et un nouveau VPC.
Créer un nouveau groupe de sécurité
bash
> [!IMPORTANT]
> Assurez-vous que votre compte AWS dispose des autorisations appropriées pour créer des ressources.
hcl
ressource "aws_security_group" "my_security_group" {
nom = "mon_groupe_de_sécurité"
description = "Mon groupe de sécurité pour le VPC"
# Règles d'entrée
entrée {
depuis_port = 22
vers_port = 22
protocole="tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# Règles de sortie
sortie {
depuis_port = 0
vers_port = 0
protocole="-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
Créer un nouveau VPC
hcl
ressource "aws_vpc" "my_vpc" {
cidr_block = "10.0.0.0/16"
balises = {
Nom = "Mon VPC"
}
}
Création du réseau sous-jacent
Une fois le VPC créé, nous pouvons créer le réseau sous-jacent. Pour ce faire, nous devons créer un nouveau sous-réseau et une nouvelle table de routage.
Créer un nouveau sous-réseau
hcl
ressource "aws_subnet" "my_subnet" {
cidr_block = "10.0.1.0/24"
vpc_id = aws_vpc.my_vpc.id
disponibilité_zone = "us-west-2a"
balises = {
Nom = "Mon sous-réseau"
}
}
Créer une nouvelle table de routage
hcl
ressource "aws_route_table" "my_route_table" {
vpc_id = aws_vpc.my_vpc.id
balises = {
Nom = "Ma table de routage"
}
}
Paramètres réseau de sécurité
Une fois le réseau sous-jacent créé, nous pouvons configurer le réseau de sécurité. Pour ce faire, nous devons créer une nouvelle règle de sécurité et l'associer au sous-réseau.
Créer une nouvelle règle de sécurité
hcl
ressource "aws_security_group_rule" "my_security_rule" {
type = "entrée"
depuis_port = 22
vers_port = 22
protocole="tcp"
source_security_group_id = aws_security_group.my_security_group.id
security_group_id = aws_security_group.my_security_group.id
}
Associer la règle de sécurité au sous-réseau
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
}
Configuration du réseau de données
Une fois le réseau de sécurité configuré, nous pouvons configurer le réseau de données. Pour ce faire, nous devons créer une nouvelle instance EC2 et l'associer au sous-réseau.
Créer une nouvelle instance EC2
hcl
ressource "aws_instance" "my_ec2_instance" {
ami="ami-abc123"
instance_type = "t2.micro"
vpc_security_group_ids = [aws_security_group.my_security_group.id]
subnet_id = aws_subnet.my_subnet.id
}
Associer l'instance EC2 au sous-réseau
hcl
ressource "aws_network_interface_attachment" "my_network_association" {
instance_id = aws_instance.my_instance_ec2.id
network_interface_id = aws_network_interface.my_network.id
index_appareil = 0
}
Configuration du réseau de stockage
Une fois le réseau de données configuré, nous pouvons configurer le réseau de stockage. Pour ce faire, nous devons créer un nouveau volume EBS et l'attacher à l'instance EC2.
Créer un nouveau volume EBS
hcl
ressource "aws_ebs_volume" "my_ebs_volume" {
disponibilité_zone = "us-west-2a"
taille = 10
}
Attachez le volume EBS à l'instance EC2
hcl
ressource "aws_volume_attachment" "my_ebs_association" {
nom_appareil = "/dev/sdh"
volume_id = aws_ebs_volume.my_ebs_volume.id
instance_id = aws_instance.my_instance_ec2.id
}
Paramètres réseau de redirection
Une fois le réseau de stockage configuré, nous pouvons configurer le réseau de redirection. Pour ce faire, nous devons créer un nouveau groupe de redirection et l'associer à l'instance EC2.
Créer un nouveau groupe de redirection
hcl
ressource "aws_lb_target_group" "my_redirect_group" {
nom = "mon-groupe-redirection"
port = 80
protocole = "HTTP"
vpc_id = aws_vpc.my_vpc.id
}
Associer le groupe de redirection à l'instance EC2
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
}
Équilibrage de la configuration du réseau
Une fois le réseau de redirection configuré, nous pouvons configurer le réseau d'équilibrage. Pour ce faire, nous devons créer un nouveau groupe d'équilibrage et l'associer à l'instance EC2.
Créer un nouveau groupe d'équilibrage
hcl
ressource "aws_lb" "my_balancing_group" {
nom = "mon-groupe d'équilibrage"
interne = faux
load_balancer_type = "application"
security_groups = [aws_security_group.my_security_group.id]
sous-réseaux = [aws_subnet.my_subnet.id]
}
Associer le groupe d'équilibrage à l'instance EC2
hcl
ressource "aws_lb_listener" "my_balancing_association" {
load_balancer_arn = aws_lb.my_balancer_group.arn
protocole = "HTTP"
port = 80
action_par défaut {
tapez = "en avant"
target_group_arn = aws_lb_target_group.my_group_redirection.arn
}
}
Surveillance de la configuration du réseau
Une fois le réseau d’équilibrage configuré, nous pouvons configurer le réseau de surveillance. Pour ce faire, nous devons créer un nouveau groupe de surveillance et l'associer à l'instance EC2.
Créer un nouveau groupe de surveillance
hcl
ressource "aws_cloudwatch_metric_alarm" "my_monitoring_group" {
alarm_name = "mon-groupe-de-surveillance"
comparative_operator = "GreaterThanOrEqualToThreshold"
périodes_d'évaluation = "1"
metric_name = "CPUUtilisation"
espace de noms = "AWS/EC2"
période = "300"
statistique = "Moyenne"
seuil = "80"
actions_enabled = vrai
alarm_actions = [aws_sns_topic.mi_topic.arn]
}
Associer le groupe de surveillance à l'instance EC2
hcl
ressource "aws_sns_topic" "my_topic" {
nom = "mon-sujet"
}
Conclusion
Dans cet article, nous avons vu comment concevoir un réseau VPC dans AWS avec Terraform. Nous avons créé un nouveau VPC, un nouveau sous-réseau, une nouvelle table de routage, une nouvelle règle de sécurité, une nouvelle instance EC2, un nouveau volume EBS, un nouveau groupe de redirection, un nouveau groupe d'équilibrage et un nouveau groupe de surveillance.