Construction d’un VPC Terraform AWS étape par étape

Si vous devez configurer Amazon Virtual Private Cloud (VPC), vous pouvez le faire via la console de gestion AWS, mais l’automatiser est tellement plus amusant! Dans un scénario DevOps, la construction de services AWS via des outils comme Terraform est une approche plus évolutive et automatisée pour la provision de ressources cloud.

Dans ce tutoriel, vous apprendrez comment créer et exécuter une configuration Terraform pour construire un VPC Terraform à partir de zéro!

Prérequis

Cet article sera un tutoriel étape par étape. Si vous souhaitez suivre, assurez-vous d’avoir les éléments suivants en place:

  • Un compte AWS
  • Terraform – Ce tutoriel utilisera Terraform v0.14.9 fonctionnant sur Ubuntu 18.04.5 LTS, mais tout système d’exploitation avec Terraform devrait fonctionner.
  • A code editor – Even though you can use any text editor to work with Terraform configuration files, you should have one that understands the HCL Terraform language. Try out Visual Studio (VS) Code.

Compréhension des VPC AWS

Le cloud AWS propose des dizaines de services différents, tels que le calcul, le stockage, le réseau, et bien plus encore. Chacun de ces services peut communiquer entre eux, tout comme les services d’un centre de données local. Cependant, chacun de ces services est indépendant les uns des autres et n’est pas nécessairement isolé des autres services. Le VPC AWS permet de remédier à cela.

Un VPC AWS est un réseau unique qui vous permet de lancer des services AWS au sein d’un réseau isolé. Techniquement, un VPC AWS est presque identique à la possession d’un centre de données, mais avec des avantages supplémentaires intégrés tels que la scalabilité, la tolérance aux pannes, un stockage illimité, etc.

AWS VPC architecture

Les VPC AWS sont restreints par région. Vous ne pouvez pas avoir un VPC s’étendant sur plusieurs régions, avec un maximum de cinq VPC pris en charge par région.

Construction de la configuration Terraform pour un VPC AWS

Assez parlé, passons à la construction !

1. Pour commencer, créez un dossier pour stocker vos fichiers de configuration Terraform. Ce tutoriel créera un dossier appelé terraform-vpc-demo dans votre répertoire personnel.

mkdir ~/terraform-vpc-demo
 cd ~/terraform-vpc-demo

2. Ouvrez votre éditeur de code préféré et copiez/collez la configuration suivante qui a déjà été créée pour vous, en enregistrant le fichier sous le nom main.tf dans le répertoire ~/terraform-vpc-demo. Des informations sur chaque ressource à créer sont incluses dans le fichier.

Le fichier main.tf contient toutes les ressources qui doivent être provisionnées.

Terraform utilise plusieurs types différents de fichiers de configuration. Chaque fichier est écrit soit au format texte brut, soit au format JSON. Ils ont une convention de nommage spécifique soit en format .tf, soit .tfjson.

La configuration Terraform ci-dessous :

  • Crée un VPC
  • Crée une Passerelle Internet et la relie au VPC pour permettre au trafic à l’intérieur du VPC d’être accessible depuis l’extérieur.
  • Crée un sous-réseau public et privé

Les sous-réseaux sont des réseaux au sein de réseaux. Ils sont conçus pour aider le flux de trafic réseau à être plus efficace et fournir de plus petits « morceaux » d’adresses IP plus gérables.

  • Crée une table de routage pour les sous-réseaux public et privé et associe la table à ces deux sous-réseaux
  • Crée une Passerelle NAT pour permettre aux sous-réseaux privés d’accéder à Internet sans avoir besoin d’une adresse IP routable externe assignée à chaque ressource.
Create the VPC
 resource "aws_vpc" "Main" {                # Création de VPC ici
   cidr_block       = var.main_vpc_cidr     # Définition du bloc CIDR utilisez 10.0.0.0/24 pour la démo
   instance_tenancy = "default"
 }
 Create Internet Gateway and attach it to VPC
 resource "aws_internet_gateway" "IGW" {    # Création de la passerelle Internet
    vpc_id =  aws_vpc.Main.id               # vpc_id sera généré après la création de VPC
 }
 Create a Public Subnets.
 resource "aws_subnet" "publicsubnets" {    # Création de sous-réseaux publics
   vpc_id =  aws_vpc.Main.id
   cidr_block = "${var.public_subnets}"        # Bloc CIDR des sous-réseaux publics
 }
 Create a Private Subnet                   # Création de sous-réseaux privés
 resource "aws_subnet" "privatesubnets" {
   vpc_id =  aws_vpc.Main.id
   cidr_block = "${var.private_subnets}"          # Bloc CIDR des sous-réseaux privés
 }
 Route table for Public Subnet's
 resource "aws_route_table" "PublicRT" {    # Création de RT pour le sous-réseau public
    vpc_id =  aws_vpc.Main.id
         route {
    cidr_block = "0.0.0.0/0"               # Le trafic du sous-réseau public atteint Internet via la passerelle Internet
    gateway_id = aws_internet_gateway.IGW.id
     }
 }
 Route table for Private Subnet's
 resource "aws_route_table" "PrivateRT" {    # Création de RT pour le sous-réseau privé
   vpc_id = aws_vpc.Main.id
   route {
   cidr_block = "0.0.0.0/0"             # Le trafic du sous-réseau privé atteint Internet via la passerelle NAT
   nat_gateway_id = aws_nat_gateway.NATgw.id
   }
 }
 Route table Association with Public Subnet's
 resource "aws_route_table_association" "PublicRTassociation" {
    subnet_id = aws_subnet.publicsubnets.id
    route_table_id = aws_route_table.PublicRT.id
 }
 Route table Association with Private Subnet's
 resource "aws_route_table_association" "PrivateRTassociation" {
    subnet_id = aws_subnet.privatesubnets.id
    route_table_id = aws_route_table.PrivateRT.id
 }
 resource "aws_eip" "nateIP" {
   vpc   = true
 }
 Creating the NAT Gateway using subnet_id and allocation_id
 resource "aws_nat_gateway" "NATgw" {
   allocation_id = aws_eip.nateIP.id
   subnet_id = aws_subnet.publicsubnets.id
 }

3. Maintenant, créez un autre fichier à l’intérieur du répertoire ~/terraform-vpc-demo, nommez-le vars.tf et collez le contenu ci-dessous.

Vars.tf est un fichier de variables Terraform qui contient toutes les variables auxquelles le fichier de configuration fait référence.

Vous pouvez voir les références de variables dans le fichier de configuration par:

  • var.region
  • var.main_vpc_cidr
  • var.public_subnets
  • var.private_subnets
variable "region" {}
 variable "main_vpc_cidr" {}
 variable "public_subnets" {}
 variable "private_subnets" {}

Il est possible d’inclure toutes les valeurs de configuration dans un seul fichier de configuration. Pour garder les choses claires et faciliter la tâche des développeurs et des administrateurs, il est important de diviser les choses.

4. Créez un autre fichier à l’intérieur du répertoire ~/terraform-vpc-demo, collez le code suivant et nommez-le provider.tf pour définir le fournisseur AWS. Le tutoriel créera des ressources dans la région us-east-2.

Le fichier des fournisseurs définit les fournisseurs tels que AWS, Oracle ou Azure, etc., afin que Terraform puisse se connecter aux services cloud corrects. provider "aws" { region = "us-east-2" }

provider "aws" {
   region = "us-east-2"
 }

5. Enfin, créez un autre fichier à l’intérieur du répertoire ~/terraform-vpc-demo, nommez-le terraform.tfvars, et collez le code ci-dessous. Ce fichier de variables contient les valeurs que Terraform utilisera pour remplacer les références de variables à l’intérieur du fichier de configuration.

main_vpc_cidr = "10.0.0.0/24"
 public_subnets = "10.0.0.128/26"
 private_subnets = "10.0.0.192/26"

Maintenant, ouvrez votre terminal préféré (Bash dans ce cas) et vérifiez que tous les fichiers requis ci-dessous sont contenus dans le dossier en exécutant la commande tree.

tree terraform-vpc-demo  
Folder structure of terraform files

Exécution de Terraform pour créer le VPC AWS

Maintenant que vous avez le fichier de configuration Terraform et les fichiers de variables prêts à l’emploi, il est temps d’initialiser Terraform et de créer le VPC ! Pour provisionner une configuration Terraform, Terraform utilise généralement une approche en trois étapes terraform initterraform planterraform apply. Parcourons maintenant chaque étape.

1. Ouvrez un terminal et accédez au répertoire ~\terraform-vpc-demo.

cd ~\terraform-vpc-demo

2. Exécutez la commande terraform init dans le même répertoire. La commande terraform init initialise les plugins et les fournisseurs nécessaires pour travailler avec les ressources.

terraform init

Si tout se passe bien, vous devriez voir le message Terraform a été initialisé avec succès dans la sortie, comme indiqué ci-dessous.

Terraform initialized successfully

3. Maintenant, exécutez la commande terraform plan. Il s’agit d’une action facultative mais recommandée pour vous assurer que la syntaxe de votre configuration est correcte et vous donne un aperçu des ressources qui seront provisionnées dans votre infrastructure. terraform plan

terraform plan

Si réussi, vous devriez voir un message comme Plan : "X" à ajouter, "Y" à modifier, ou "Z" à détruire dans la sortie pour indiquer que la commande a réussi. Vous verrez également toutes les ressources AWS que Terraform a l’intention de créer.

Plan command execution

4. Ensuite, indiquez réellement à Terraform de provisionner la VPC AWS et les ressources en utilisant terraform apply. Lorsque vous invoquez terraform apply, Terraform lira la configuration (main.tf) et les autres fichiers pour compiler une configuration. Il enverra ensuite cette configuration à AWS comme des instructions pour construire la VPC et d’autres composants.

terraform apply
Terraform apply command execution

Remarquez les IDs définis dans la sortie Terraform. Vous aurez besoin de ces IDs pour corréler les ressources créées dans la prochaine section.

La commande Terraform a été exécutée avec succès, passons maintenant à la Console de gestion AWS pour confirmer que la VPC et les composants ont été créés avec succès.

Vérification de la VPC Terraform AWS

À ce stade, vous devriez avoir créé la VPC avec Terraform. Vérifions manuellement la VPC dans la Console de gestion AWS.

1. Ouvrez votre navigateur Web préféré et accédez à la Console de gestion AWS et connectez-vous.

2. Pendant que vous êtes dans la Console, cliquez sur la barre de recherche en haut, recherchez ‘vpc’ et cliquez sur l’élément de menu VPC.

Navigating to the VPC service

3. Une fois sur la page VPC, cliquez sur Vos VPC. Vous devriez voir la VPC créée avec le même ID que Terraform a renvoyé précédemment.

VPC created

4. Depuis que Terraform a créé plus que simplement la ressource VPC mais toutes les ressources requises pour la VPC, vous devriez alors également trouver chaque ressource sur cette page.

Subnets created
Route tables created
Internet Gateway created
NAT Gateway created

Avec tous les composants créés avec succès, en utilisant Terraform, cette VPC est prête à être utilisée!

Conclusion

Dans ce tutoriel, vous avez appris comment utiliser Terraform pour déployer un VPC AWS et ses composants en utilisant Terraform.

La création d’un Cloud privé virtuel Amazon avec Terraform vous permet de créer des ressources rapidement, facilement et de manière prévisible. Vous êtes maintenant prêt à utiliser ces connaissances avec d’autres services AWS et à construire des services puissants dessus.

Source:
https://adamtheautomator.com/terraform-vpc/