Objectif : Déployer une machine virtuelle sur AWS avec Terraform.
Prérequis :
Accès à un compte AWS
Terraform
Étape 1 : Installer Terraform
Connectez-vous à une machine virtuelle ou un environnement de travail approprié pour réaliser ce TP. Vous pouvez utiliser une VM locale, un serveur sur lequel vous avez accès, ou même une instance EC2 sur AWS.
Option 1 : Machine locale Utilisez votre propre ordinateur ou une VM locale pour réaliser ce TP.
Option 2 : VM AWS Si vous préférez travailler directement sur une machine dans le cloud, vous pouvez créer une instance EC2 sur AWS pour y installer Terraform. Veillez à choisir une instance avec suffisamment de ressources (ex : t2.micro pour des tests de base).
Installer Terraform :
sudo apt-get update sudo apt-get install -y wget unzip wget https://releases.hashicorp.com/terraform/1.5.0/terraform_1.5.0_linux_amd64.zip unzip terraform_1.5.0_linux_amd64.zip sudo mv terraform /usr/local/bin/Vérifiez l’installation :
terraform -vVous devriez voir la version de Terraform installée.
Étape 2 : Initialiser un projet Terraform
Avant de pouvoir déployer les ressources, vous devez initialiser le répertoire Terraform pour télécharger les plugins nécessaires.
Créez un répertoire de travail pour votre projet Terraform :
mkdir terraform-aws-deployment cd terraform-aws-deploymentInitialiser Terraform :
terraform initCette commande va télécharger les plugins pour AWS et préparer le répertoire pour l’utilisation de Terraform.
Étape 3 : Créer un fichier main.tf pour configurer une instance EC2
Créez un fichier main.tf qui contient la configuration de l’instance EC2 à déployer sur AWS. Voici un exemple de configuration :
Ajouter des variables pour rendre la configuration plus flexible
Pour rendre la configuration plus flexible, nous allons utiliser un fichier
variables.tfpour définir certaines valeurs paramétrables. Créez un fichiervariables.tfavec le contenu suivant :variable "region" { description = "La région AWS dans laquelle déployer les ressources" default = "us-east-1" } variable "instance_type" { description = "Le type d'instance EC2 à déployer" default = "t3.medium" } variable "disk_size" { description = "La taille du disque de l'instance EC2 (en Go)" default = 20 }Configurer le fichier main.tf
Utilisez les variables définies dans
variables.tfpour créer un fichiermain.tfqui contient la configuration de l’instance EC2 :provider "aws" { region = var.region } resource "aws_instance" "example" { ami = "**Installer un serveur Apache :** ```bash sudo apt-get update sudo apt-get install -y apache2Installer des paquets supplémentaires :
sudo apt-get install -y curl vim" # Remplacez par l'AMI souhaitée instance_type = var.instance_type root_block_device { volume_size = var.disk_size # Taille du disque en Go volume_type = "gp2" } tags = { Name = "Terraform-EC2-Example" } }Configurer un groupe de sécurité
Pour sécuriser l’accès à votre instance EC2, vous allez créer un groupe de sécurité qui autorise uniquement certaines adresses IP à accéder à l’instance. Ajoutez la configuration suivante au fichier
main.tf:resource "aws_security_group" "example" { name = "allow_ssh" description = "Autoriser uniquement l'accès SSH" vpc_id = "vpc-xxxxxxxx" # Remplacez par l'ID de votre VPC ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["your_ip_address/32"] # Remplacez par votre adresse IP } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" # Remplacez par l'AMI souhaitée instance_type = var.instance_type root_block_device { volume_size = var.disk_size # Taille du disque en Go volume_type = "gp2" } vpc_security_group_ids = [aws_security_group.example.id] tags = { Name = "Terraform-EC2-Example" } }
Explication :
Le fournisseur AWS est configuré avec la région définie dans le fichier
variables.tf.Une instance EC2 de type
t3.medium(ou le type spécifié dans les variables) est créée avec l’AMI spécifiée.Un volume de 20 Go est configuré pour l’instance.
Un groupe de sécurité est créé pour restreindre l’accès SSH à une adresse IP spécifique.
Un tag
Nameest ajouté pour identifier facilement l’instance.
Étape 4 : Appliquer la configuration Terraform
Pour déployer la machine virtuelle sur AWS, exécutez la commande suivante :
terraform applyTerraform vous demandera de confirmer les modifications. Tapez yes pour continuer.
Une fois la commande exécutée, Terraform déploiera l’instance EC2 sur AWS en utilisant les paramètres spécifiés dans le fichier main.tf.
Étape 5 : Connecter à l’instance et installer un serveur
Une fois l’instance créée, vous pouvez vous y connecter via SSH et installer un serveur web comme Apache ou Nginx.
Connectez-vous à l’instance :
ssh -i /chemin/vers/votre/cle.pem ec2-user@your_instance_public_ipInstaller un serveur Apache :
sudo apt-get update sudo apt-get install -y apache2Démarrer le service Apache :
sudo systemctl start apache2Vérifiez que le serveur fonctionne : Accédez à l’adresse IP publique de l’instance depuis votre navigateur pour vérifier que la page par défaut d’Apache est affichée.
Étape 6 : Vérification
Pour vérifier que l’instance a bien été créée, vous pouvez utiliser la console AWS ou exécuter la commande suivante dans Terraform :
terraform showCette commande vous montrera les détails des ressources déployées, y compris l’adresse IP de l’instance.
Conclusion : Vous avez déployé avec succès une instance EC2 sur AWS en utilisant Terraform, puis vous y avez installé un serveur Apache. Vous avez appris à créer un fichier de configuration Terraform, initialiser le projet, appliquer les configurations pour déployer une ressource sur AWS, et installer un serveur web.
