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.

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.
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.
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
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" }
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.
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
.

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 init → terraform plan → terraform apply. Parcourons maintenant chaque étape.
1. Ouvrez un terminal et accédez au répertoire ~\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.
Si tout se passe bien, vous devriez voir le message Terraform a été initialisé avec succès
dans la sortie, comme indiqué ci-dessous.

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
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.

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.

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.

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.

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.




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.