Sélectionner une page

Formation > Blog > Terraform > Syntaxe Terraform : les bases du HCL

Syntaxe Terraform : les bases du HashiCorp Configuration Language

Terraform est un outil d’infrastructure as code déclaratif extrêmement populaire qui permet de définir votre infrastructure dans un code plutôt que de la configurer manuellement. Compatible avec de nombreux fournisseurs Cloud, il utilise une syntaxe unique aux produits HashiCorp appelée le HashiCorp Configuration Language (HCL). Dans cet article, nous allons voir les principaux éléments qui composent la syntaxe de Terraform et comment l’utiliser.

Vous souhaitez devenir expert en développement d’applications performantes ? Notre formation React vous permettra de maitriser le développement d’applications monopage avec Redux et TypeScript.


L’équipe Ambient IT
L’équipe Ambient IT

Blocs, arguments et expressions

Terraform est un outil déclaratif, ce qui signifie qu’il se configure en lui indiquant le but visé plutôt que de lui décrire les étapes à respecter. Le but principal du HCL est de déclarer des ressources qui représentent des objets d’infrastructure dans votre configuration. Tout le langage est basé autour de ces ressources et toutes les caractéristiques sont présentes pour rendre la définition des ressources plus souples et plus claires.

La syntaxe du HCL se compose d’un faible nombre d’éléments de base parmi lesquels les plus notables sont les blocs, les arguments et les expressions. Les blocs sont des conteneurs pour des objets tels que les ressources, tandis que les arguments attribuent une valeur à un nom et que les expressions représentent une valeur, soit littéralement, soit en référençant et en combinant d’autres valeurs.

Blocs

Les blocs sont des éléments fondamentaux du langage HCL et sont utilisés pour structurer et organiser les configurations dans les fichiers HCL. Un bloc représente un objet ou une configuration spécifique, comme une ressource, un fournisseur, une variable ou une sortie. Il existe plusieurs types de blocs :

  • Les blocs ressources représentent une infrastructure ou un composant d’infrastructure. Ils contiennent tous les paramètres nécessaires pour créer ou modifier cette ressource.
  • Les blocs provider configurent la façon dont Terraform interagit avec un fournisseur de service cloud ou d’infrastructure spécifique. Il inclut des informations d’authentification et des paramètres spécifiques au fournisseur.
  • Les blocs variables définissent les variables utilisées dans la configuration. Ils rendent l’utilisation de Terraform flexible en permettant aux utilisateurs de fournir des valeurs personnalisées lors de l’exécution du logiciel.
  • Les blocs output sont utilisés pour afficher les informations d’une ressource après son déploiement ou sa modification.
  • Les blocs modules permettent de réutiliser des modules dans une configuration.

Arguments

Les arguments représentent des paires clé-valeur utilisées pour définir des propriétés ou des attributs d’un bloc, comme une ressource, un fournisseur, une variable ou une sortie. Les arguments permettent de configurer les différents aspects d’une infrastructure et de décrire comment les ressources sont créées, modifiées ou supprimées.

La valeur de chaque argument peut être une chaîne de caractère, un nombre, un booléen ou une expression faisant référence à d’autres éléments de la configuration. Ils sont essentiels pour décrire et configurer les différents aspects d’une infrastructure et permettent de personnaliser les ressources et les configurations en fonction des besoins de l’utilisateur.

Expressions

Les expressions permettent de créer des valeurs dynamiques dans les configurations, elles servent à référencer les attributs d’autres ressources, effectuer des calculs, manipuler des données ou même utiliser des fonctions intégrées. Les expressions se divisent en plusieurs types :

  • Références aux attributs : les expressions peuvent référencer les attributs d’autres ressources, de variables ou de modules pour créer des dépendances entre les éléments d’une configuration.
  • Opérations arithmétiques et logiques : elles incluent des opérations arithmétiques et logiques pour effectuer des calculs ou des comparaisons.
  • Fonctions : Terraform dispose d’une série de fonctions intégrées qui peuvent être utilisées pour transformer ou manipuler des données.
  • Opérations de liste et de map : les expressions peuvent inclure des opérations sur les listes et les maps.

Les expressions permettent d’ajouter de la flexibilité et de la dynamique aux configurations HCL en facilitant la création de dépendances entre les ressources.

Répertoires et fichiers

Votre configuration Terraform est composée de répertoires et de modules. Tous les modules sont écrits en langage JSON et/ou en .tf.

Extension de fichiers .TF

Les fichiers .tf décrivent les ressources d’infrastructure, les variables, les fournisseurs, les modules, les sorties et d’autres éléments de configuration nécessaires pour déployer et gérer une infrastructure grâce à Terraform. Dans votre infrastructure Terraform, tous ces fichiers sont écrits en HCL.

Ils sont organisés en blocs, qui représentent différents aspects de la configuration. Les blocs sont constitués d’arguments, qui définissent les attributs ou les propriétés des blocs, et d’expressions, qui permettent de créer des valeurs dynamiques.

Fichiers JSON

Le langage Terraform peut être exprimé en langage JSON même si cela rajoute de la complexité à votre architecture. Le langage JSON est toutefois utile dans certains cas de figure :

  • Si vous utilisez un script ou un outil pour générer automatiquement vos configurations Terraform, il est plus simple d’utiliser du JSON, car c’est un format standard supporté par de nombreux langages.
  • Si vous travaillez avec d’autres outils ou systèmes générant des fichiers JSON, il peut être plus simple d’utiliser aussi ce format pour votre configuration Terraform.

Il faut noter que contrairement au HCL, le JSON ne permet pas d’ajouter des commentaires dans les fichiers et certaines constructions, telles que les opérations arithmétiques et logiques, ne sont pas directement supportées en JSON.

UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?

Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.

ILS SE SONT FORMÉS CHEZ NOUS

partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp
partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp