GNU/Linux >> Tutoriels Linux >  >> Linux

Créer un cloud privé virtuel (VPC) sur AWS à l'aide de Terraform

Dans cet article, je vais vous montrer comment créer un VPC avec des sous-réseaux, une passerelle Internet, des passerelles NAT et des tables de routage. Nous créerons 1 VPC avec 4 sous-réseaux :2 privés et 2 publics, 2 passerelles NAT, 1 passerelle Internet et 4 tables de routage.

Avant de continuer, je suppose que vous avez une compréhension de base de Terraform et VPC sur AWS. Pour en savoir plus sur le VPC et sa création à partir de la console AWS, vous pouvez cliquer ici et pour découvrir les bases de Terraform, vous pouvez rechercher "Qu'est-ce que Terraform et comment l'installer sur l'instance AWS EC2 ?"

Pré-requis

  1. Compréhension de base de Terraform
  2. Terraform installé sur votre système.
  3. Compte AWS (créez-le si vous n'en avez pas).
  4. 'access_key' &'secret_key' d'un utilisateur AWS IAM. (Cliquez ici pour apprendre à créer un utilisateur IAM avec 'access_key' &'secret_key' sur AWS, )

Ce que nous allons faire

  1. Écrire des fichiers de configuration Terraform pour créer un VPC avec d'autres ressources dépendantes
  2. Créer un VPC et d'autres ressources dépendantes à l'aide des fichiers de configuration Terraform
  3. Supprimer le VPC créé et les autres ressources dépendantes à l'aide de Terraform

Écrire des fichiers de configuration Terraform pour créer un VPC avec d'autres ressources dépendantes.

Créez un répertoire dédié où vous pouvez créer des fichiers de configuration terraform.

Utilisez la commande suivante pour créer un répertoire et y modifier votre répertoire de travail actuel.

mkdir terraform
cd terraform/

J'utilise "vim" comme éditeur pour écrire dans des fichiers. Vous pouvez utiliser un éditeur de votre choix et copier-coller les configurations suivantes pour créer variables.tf, terraform.tfvars et main.tf

Créez "main.tf", qui est chargé de créer un VPC sur AWS avec les ressources dépendantes. Ce main.tf lira les valeurs des variables de variables.tf et terraform.tfvars.

vim main.tf 
provider "aws" { region ="${var.region}" access_key ="${var.access_key}" secret_key ="${var.secret_key}"}# ressources VPC :cela créera 1 VPC avec 4 Sous-réseaux, 1 passerelle Internet, 4 tables de routage. ressource "aws_vpc" "default" { cidr_block =var.cidr_block enable_dns_support =true enable_dns_hostnames =true}ressource "aws_internet_gateway" "default" { vpc_id =aws_vpc.default.id}ressource "aws_route_table" "private" { count =length(var. private_subnet_cidr_blocks) vpc_id =aws_vpc.default.id}resource "aws_route" "private" { count =length(var.private_subnet_cidr_blocks) route_table_id =aws_route_table.private[count.index].id destination_cidr_block ="0.0.0.0/0" nat_gateway_id =aws_nat_gateway .default[count.index].id}ressource "aws_route_table" "public" { vpc_id =aws_vpc.default.id}ressource "aws_route" "public" { route_table_id =aws_route_table.public.id destination_cidr_block ="0.0.0.0/0" gateway_id =aws_internet_gateway.default.id}ressource "aws_subnet" "privé" { count =length(var.private_subnet_cidr_blocks) vpc_id =aws_vpc.default.id cidr_block =var.private_subnet_cidr_blocks[count.index ] available_zone =var.availability_zones[count.index]}ressource "aws_subnet" "public" { count =length(var.public_subnet_cidr_blocks) vpc_id =aws_vpc.default.id cidr_block =var.public_subnet_cidr_blocks[count.index] available_zone =var.availability_zones [count.index] map_public_ip_on_launch =true}ressource "aws_route_table_association" "private" { count =length(var.private_subnet_cidr_blocks) subnet_id =aws_subnet.private[count.index].id route_table_id =aws_route_table.private[count.index].id} ressource "aws_route_table_association" "public" { count =length(var.public_subnet_cidr_blocks) subnet_id =aws_subnet.public[count.index].id route_table_id =aws_route_table.public.id}# ressources NAT :cela créera 2 passerelles NAT dans 2 sous-réseaux publics pour 2 sous-réseaux privés différents.resource "aws_eip" "nat" { count =length(var.public_subnet_cidr_blocks) vpc =true}resource "aws_nat_gateway" "default" { depend_on =["aws_i nternet_gateway.default"] count =length(var.public_subnet_cidr_blocks) allocation_id =aws_eip.nat[count.index].id subnet_id =aws_subnet.public[count.index].id}   

Créez 'variables.tf' qui contient la déclaration et la définition des variables.

variables vim.tf
variable "access_key" { description ="Clé d'accès à la console AWS" }variable "secret_key" { description ="Clé secrète de la console AWS" }variable "region" { default ="eu-west-3" type =string description ="Région du VPC"}variable "cidr_block" { default ="10.0.0.0/16" type =string description ="Bloc CIDR pour le VPC"}variable "public_subnet_cidr_blocks" { default =["10.0.0.0/24 ", "10.0.2.0/24"] type =list description ="Liste des blocs CIDR de sous-réseau public"}variable "private_subnet_cidr_blocks" { default =["10.0.1.0/24", "10.0.3.0/24"] type =list description ="Liste des blocs CIDR de sous-réseau privé"}variable "availability_zones" { default =["eu-west-3a", "eu-west-3b"] type =list description ="Liste des zones de disponibilité"}  

Créez 'terraform.tfvars' qui contient la définition des variables access_key et secret_key définies dans le fichier ci-dessus. Nous avons conservé la déclaration de ces deux variables dans le fichier 'terraform.tfvars'.

Les clés suivantes doivent être remplacées par les clés de votre utilisateur IAM.

vim terraform.tfvars 
access_key ="AKIAQ6GAIA5XIHHM2GJM"secret_key ="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"

Maintenant, vous devriez avoir 3 fichiers, à savoir, variables.tf, terraform.tfvars et main.tf

Créer un VPC et d'autres ressources dépendantes à l'aide des fichiers de configuration Terraform

Avant d'exécuter les commandes suivantes, assurez-vous d'avoir configuré la clé d'accès et la clé secrète valides.

La première commande à utiliser est 'terraform init'. Cette commande télécharge et installe les plug-ins pour les fournisseurs utilisés dans la configuration. Dans notre cas, il s'agit d'AWS.

initialisation de terraform

La seconde commande à utiliser est 'terraform plan'. Cette commande permet de voir les changements qui auront lieu sur l'infrastructure.

plan de terraform

La commande 'terraform apply' créera les ressources sur AWS mentionnées dans le fichier main.tf. Vous serez invité à fournir votre contribution pour créer les ressources.

appliquer terraform

Lorsque vous exécutez la commande ci-dessus, vous pouvez voir que 20 nouvelles ressources ont été ajoutées et 0 a été détruite dans la sortie.

Vous pouvez accéder à la console AWS VPC pour vérifier si le VPC est créé avec des sous-réseaux, des passerelles NAT de tables de routage et une passerelle Internet.

Supprimer le VPC créé et les autres ressources dépendantes à l'aide de Terraform

Si vous n'avez plus besoin des ressources que vous avez créées à l'aide de la configuration mentionnée dans le fichier main.tf, vous pouvez utiliser la commande "terraform destroy" pour supprimer toutes ces ressources.

terraform détruire

Lorsque vous exécutez la commande ci-dessus, vous pouvez voir que 20 ressources qui ont été créées sont détruites dans la sortie. Vous pouvez vérifier la même chose en visitant AWS dans le tableau de bord VPC.

Conclusion

Dans cet article, nous avons vu les étapes pour créer un VPC avec 4 sous-réseaux, 4 tables de routage, 2 passerelles NAT et 1 passerelle Internet. Nous avons également vu comment les ressources créées peuvent être détruites.


Linux
  1. Comment créer un réseau VPC (Virtual Private Cloud) dans GCP

  2. Comment configurer votre propre VPC (Virtual Private Cloud) dans AWS

  3. Créer une instance EC2 sur AWS à l'aide de Terraform

  4. Comment créer une instance RDS sur AWS à l'aide de Terraform

  5. Comment créer un rôle IAM dans AWS à l'aide de Terraform

Créer des lecteurs de CD et de DVD virtuels à l'aide de CDEmu sous Linux

Créer une machine virtuelle KVM à l'aide de l'image Qcow2 sous Linux

Créer des environnements virtuels NodeJS à l'aide de Conda sous Linux

Créer des environnements virtuels Rust à l'aide de Conda sous Linux

Créer des environnements virtuels Golang à l'aide de Conda sous Linux

Créer un volume de disque dur virtuel (VHD) à l'aide d'un fichier sous Linux