Comment utiliser les modules du registre Terraform

Le Terraform Registry est un endroit où l’on peut trouver différents fournisseurs et modules (configurations Terraform réutilisables) et les utiliser avec Terraform. Il comprend des contributeurs comme HashiCorp, des fournisseurs tiers et la communauté Terraform. Ce registre a pour but de fournir des plugins pour gérer diverses API d’infrastructure, de mettre à disposition les modules existants pour construire rapidement les composants d’infrastructure les plus utilisés et de montrer comment développer un code Terraform écrit efficacement.

Qu’est-ce que nous allons couvrir ?

Dans ce tutoriel, nous verrons comment utiliser les modules du Terraform Registry. Nous le verrons en démontrant un exemple de création d’une instance EC2 sur AWS.

Vérification avant le vol

Pour ce tutoriel, nous avons besoin des conditions préalables suivantes :

  1. Terraform doit être installé sur le système local.
  2. Connaissance de base des modules Terraform.
  3. Un compte AWS.

Utiliser les modules du registre Terraform

Les modules pour les différents fournisseurs sont gérés par le registre Terraform. Les modules peuvent être recherchés à partir de la page du registre. Sache aussi que lors d’une recherche, seuls les modules vérifiés sont listés dans les résultats de recherche. Ces modules sont vérifiés par HashiCorp pour confirmer leur compatibilité et leur stabilité. Les modules non vérifiés peuvent également être listés à l’aide de l’option de filtrage de la recherche.

Les modules publiés dans Terraform Registry peuvent être référencés dans un code Terraform typique à l’aide de la syntaxe :

<NAMESPACE>/<Name of module>/<Name of Provider>

Par exemple, regarde l’utilisation ci-dessous du module du registre Terraform :

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
}

L’exemple ci-dessus utilise un module VPC du registre Terraform pour AWS. L’exécution de la commande ‘terraform init’ récupère et stocke les modules auxquels un code Terraform fait référence.

Le registre Terraform permet d’utiliser des modules publics et privés. Le Terraform Registry public permet ouvertement de publier et de consommer des fournisseurs et des modules. Les modules privés peuvent être publiés à l’aide d’un registre privé.

Exploration du Terraform Registry

La page du module affiche quelques brefs détails sur le module, comme la description du module, la date de publication, l’url du code source, les statistiques de téléchargement, etc. Tu peux aussi voir ici différents onglets pour Readme, Inputs, Outputs, Dependency et Resources. Tu peux te référer à ces sections pour sélectionner les variables à intégrer dans ton code.

Il y a aussi des exemples démontrant l’utilisation du module, par exemple un module pour créer une instance EC2 est utilisé dans ce guide. Avant de nous plonger dans cet exemple, regardons d’abord dans le code source de ce module. Ouvre l’url du code source. Sur la page github, il y a quelques dossiers et quelques fichiers pour ce module. Pour l’instant, nous nous concentrons uniquement sur les trois fichiers terraform : main.tf, outputs.tf et variables.tf. Le fichier main.tf contient de nombreuses lignes décrivant une instance EC2. De même, les fichiers variables.tf et outputs.tf contiennent un certain nombre de déclarations de valeurs d’entrée et de sortie.

Lancement d’une instance EC2 à l’aide d’un module

Voyons maintenant comment nous pouvons utiliser un module du registre Terraform. Nous allons créer une instance EC2 en utilisant un module de ‘terraform-aws-modules’.

Étape 1. Ouvre la page Web du registre Terraform et recherche le module aws pour EC2 :

Seraching modules from Terraform Registry webpage
Étape 2. Clique sur le résultat de la recherche ‘terraform-aws-modules/ec2-instance’ comme indiqué ci-dessus. Ce module est utilisé pour lancer une instance AWS EC2 dans notre cas.

Regarde maintenant le fichier de configuration ci-dessous que nous avons créé localement sur notre système pour travailler avec ce module. Dans ce fichier, nous avons inclus le module ci-dessus en utilisant l’argument ‘source’. Nous n’avons utilisé que quelques déclarations du module actuel comme décrit ici :

$ nano myinstance.tf
provider "aws" {
  region = "us-east-1"
}

module "ec2_instance" {
  source  = "terraform-aws-modules/ec2-instance/aws"
  version = "~> 3.0"

  name = "single-instance"

  ami                    = "ami-0022f774911c1d690"
  instance_type          = "t2.micro"
 availability_zone    ="us-east-1a"
  key_name               = "Your-Key-pair-name"
  monitoring             = true
  vpc_security_group_ids = ["Security-Group-ID"]
 putin_khuylo    = true

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

Dans cette configuration, il y a deux arguments : source et version.

  1. source : Cet argument est nécessaire lorsqu’un module Terraform est utilisé. Dans la configuration « exemple » ci-dessus, Terraform cherchera l’adresse du module cité dans le registre Terraform. Les modules locaux, les URL et d’autres sources peuvent aussi être utilisés ici.
  2. version : C’est un argument facultatif mais il est recommandé de l’utiliser lorsque tu travailles avec un module Terraform. Lorsqu’il est inclus, il charge la version spécifiée du module Terraform pour les sources prises en charge. S’il n’est pas utilisé, c’est la dernière version disponible du module qui sera chargée.

Pour commencer, initialise d’abord le répertoire contenant notre fichier local ‘myinstance.tf’. Exécute la commande :

commande de terraform init

Exécute maintenant la commande ‘terraform plan’ ou utilise la commande ‘terraform apply’ pour mettre directement les changements en œuvre :

$ terraform apply

Saisis ‘oui’ lorsque tu y es invité. Cela lancera le processus d’application des changements.

Commande Terraform apply
Cette fois, nous n’avons pas besoin de créer explicitement des fichiers variables.tf ou output.tf, au lieu de cela nous devons seulement référencer les variables du référentiel que nous voulons utiliser. Depuis la console de gestion, ouvre le tableau de bord EC2 pour vérifier si l’instance est créée ou non :

Conclure…

Dans ce guide, nous avons vu comment les modules de registre Terraform peuvent être utilisés. De la même manière, essaie de configurer un VPC à l’aide d’un module Terraform.

Vous aimerez aussi...