Approvisionnement d’instances EC2
Rédigez des configurations Terraform pour déployer et gérer des machines virtuelles Amazon EC2, notamment leurs paramètres réseau et leurs groupes de sécurité.
Approvisionnement d’instances EC2 est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Instances EC2 avec Terraform
Bienvenue ! Dans cette leçon, vous apprendrez à provisionner et à gérer des machines virtuelles Amazon EC2 à l'aide de Terraform.
EC2 (Elastic Compute Cloud) fournit des serveurs virtuels évolutifs dans le cloud. En utilisant l'Infrastructure as Code (IaC) avec Terraform pour EC2, vous pouvez définir vos serveurs dans du code, ce qui garantit des déploiements cohérents et reproductibles.
Définir une instance EC2
La ressource principale correspondant à une instance EC2 dans Terraform est aws_instance. Vous devez spécifier au moins deux arguments essentiels :
ami: l'image machine Amazon (système d'exploitation et logiciels) à utiliser.instance_type: la configuration matérielle (par exemple,t2.micropour les instances éligibles à l'offre gratuite).
Voici à quoi ressemble un bloc aws_instance de base :
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyWebServer"
}
}Lancer votre première instance EC2
Mettons tout cela en pratique pour lancer une instance EC2 simple. Cette configuration définit le fournisseur AWS et l'instance EC2.
Pour la déployer, enregistrez-la dans un fichier .tf, puis exécutez terraform init, terraform plan et terraform apply dans votre terminal.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Amazon Linux 2 AMI for us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyBasicWebServer"
}
}Sécuriser votre EC2 : groupes de sécurité
Les groupes de sécurité jouent le rôle de pare-feu virtuels pour vos instances EC2. Ils contrôlent le trafic réseau entrant (ingress) et sortant (egress) autorisé à atteindre votre instance ou à la quitter.
Il est essentiel de les configurer correctement afin de protéger vos serveurs contre les accès non autorisés tout en autorisant les services nécessaires, comme SSH ou HTTP.
Créer un groupe de sécurité
Vous définissez un groupe de sécurité à l'aide de la ressource aws_security_group. Nous allons ajouter une règle ingress pour autoriser l'accès SSH (port 22) depuis n'importe où (0.0.0.0/0).
Vous devrez spécifier un vpc_id existant dans lequel le groupe de sécurité sera placé.
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
description = "SSH from anywhere"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1" # All protocols
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "allow_ssh_sg"
}
}Associer un groupe de sécurité à EC2
Mettons maintenant à jour notre aws_instance pour utiliser ce nouveau groupe de sécurité. Nous faisons référence à l'identifiant du groupe de sécurité à l'aide de aws_security_group.allow_ssh.id.
N'oubliez pas de remplacer le vpc_id du groupe de sécurité par un véritable identifiant de VPC provenant de votre compte AWS pour rendre cette configuration exécutable.
provider "aws" {
region = "us-east-1"
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic_example"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
tags = {
Name = "WebServerWithSSH"
}
}Réseau EC2 : VPC et sous-réseaux
Chaque instance EC2 se trouve dans un cloud privé virtuel (VPC) et dans un sous-réseau précis de ce VPC. Un VPC est un réseau virtuel isolé, et les sous-réseaux sont des divisions logiques de votre VPC (par exemple, publics ou privés).
Par défaut, EC2 peut être lancé dans un VPC ou un sous-réseau par défaut. Pour mieux contrôler et organiser votre infrastructure, vous indiquez souvent le sous-réseau que votre instance doit utiliser.
Créer un réseau de base
Pour contrôler entièrement le réseau de notre EC2, définissons un VPC minimal et un sous-réseau public. Cela nécessite également une passerelle Internet pour l'accès public et une table de routage pour diriger le trafic.
Cette configuration complète permet à votre EC2 de communiquer avec Internet.
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "main-vpc-lesson"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true # Instances in this subnet get a public IP
tags = {
Name = "public-subnet-lesson"
}
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "main-gw-lesson"
}
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0" # Traffic to the internet
gateway_id = aws_internet_gateway.gw.id
}
tags = {
Name = "public-rt-lesson"
}
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}EC2 dans votre réseau personnalisé
Nous allons maintenant réunir tous les éléments : un VPC personnalisé, un sous-réseau, un groupe de sécurité et notre instance EC2. L'EC2 sera lancée dans notre sous-réseau public précis et recevra automatiquement une adresse IP publique.
Cette configuration complète vous offre un contrôle précis sur votre déploiement EC2 et le rend accessible via SSH.
provider "aws" {
region = "us-east-1"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = { Name = "main-vpc-lesson" }
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true
tags = { Name = "public-subnet-lesson" }
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = { Name = "main-gw-lesson" }
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.gw.id
}
tags = { Name = "public-rt-lesson" }
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_lesson"
description = "Allow SSH inbound traffic"
vpc_id = aws_vpc.main.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
associate_public_ip_address = true
tags = {
Name = "FullWebServerLesson"
}
}Vérification de la configuration EC2
Lesquels des arguments suivants sont essentiels pour définir une ressource aws_instance de base dans Terraform ?
Récapitulatif : EC2 avec Terraform
Excellent travail ! Vous avez appris à approvisionner des instances Amazon EC2 à l’aide de Terraform.
- Nous avons défini des instances EC2 à l’aide de la ressource
aws_instance. - Nous les avons sécurisées avec
aws_security_group, en contrôlant le trafic réseau. - Nous avons configuré un réseau personnalisé de base (VPC, sous-réseau, passerelle Internet, table de routage) pour héberger notre EC2.
- Vous disposez maintenant des bases nécessaires pour déployer et gérer vos serveurs virtuels sous forme de code !
Questions Fréquemment Posées
La leçon « Approvisionnement d’instances EC2 » est-elle gratuite ?
Oui — le texte complet de « Approvisionnement d’instances EC2 » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Approvisionnement d’instances EC2 » ?
Rédigez des configurations Terraform pour déployer et gérer des machines virtuelles Amazon EC2, notamment leurs paramètres réseau et leurs groupes de sécurité. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Approvisionnement d’instances EC2 » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Configuration du fournisseur AWS
- Approvisionnement d’instances EC2
- Gestion des compartiments S3 et d’IAM
- Configurer un VPC et le réseau