Voici un ensemble de 28 questions et réponses relatives aux entretiens techniques sur Terraform, accompagnées d’une liste et d’explications sur les commandes importantes souvent abordées lors de ces discussions.
L’essor fulgurant des technologies cloud a engendré une multitude d’opportunités dans l’univers DevOps. À l’avenir, les connaissances en matière de cloud deviendront un critère incontournable lors des entretiens, et une compréhension des bases du cloud ainsi que des outils d’Infrastructure as Code (IaC) sera essentielle pour les rôles DevOps.
Qu’est-ce que Terraform ?
Terraform se positionne comme l’un des outils IaC les plus prisés par les ingénieurs cloud. Il permet de définir les ressources cloud et sur site à travers des fichiers de configuration aisément compréhensibles, facilitant ainsi la gestion de ces ressources de manière automatisée. La particularité de Terraform réside dans sa capacité à transcender les limites d’un unique fournisseur de cloud, contrairement à d’autres outils IaC. Il offre ainsi la possibilité de déployer des applications sur diverses plateformes cloud de manière simultanée.
Pour ceux qui s’interrogent sur les technologies prises en charge par Terraform, voici un aperçu :
Afin de propulser votre carrière en tant qu’ingénieur DevOps, architecte cloud, développeur ou administrateur, la maîtrise des questions d’entretien sur Terraform est primordiale. Nous avons regroupé une sélection de questions clés qui vous aideront à approfondir vos connaissances sur cet outil.
Questions et réponses générales lors d’entretiens sur Terraform
#1. Quelle est votre compréhension de Terraform ?
Terraform est un outil IaC open-source développé par Hashi Corp. Il sert à la création, à la mise à jour, à la suppression et au versionnement de votre infrastructure sur un large éventail de plateformes cloud.
#2. Quels sont les atouts de Terraform pour DevOps ?
L’utilisation de Terraform pour l’approvisionnement de l’infrastructure minimise les erreurs humaines, ce qui améliore significativement la qualité, la cohérence et l’efficacité des infrastructures cloud et sur site. Terraform repose sur le langage HCL, dont la syntaxe est proche de JSON, le rendant facile à apprendre et à utiliser. Contrairement à d’autres outils IaC proposés par des fournisseurs de cloud comme Cloudformation pour AWS, Terraform est utilisable avec de multiples plateformes cloud simultanément, évitant ainsi de devoir maîtriser plusieurs outils et favorisant la collaboration.
#3. Comment fonctionne Terraform ?
Terraform utilise des plugins, appelés fournisseurs, pour interagir avec les API des plateformes cloud et gérer les ressources. Le flux de travail utilisateur de Terraform se déroule en trois étapes :
Écriture : Définition de l’infrastructure en tant que code.
Planification : Aperçu des modifications avant application.
Application : Déploiement de l’infrastructure et mise en œuvre des changements.
#4. Que représente Terraform Cloud ?
Terraform Cloud est un environnement distant conçu pour optimiser le flux de travail de Terraform. Il offre des fonctionnalités telles que les espaces de travail et le verrouillage d’état, facilitant la collaboration au sein de grandes équipes.
#5. Qu’est-ce que l’état dans Terraform ?
En tant qu’outil IaC, Terraform doit garder une trace de l’état actuel de l’infrastructure qu’il gère. Ces informations sont stockées dans un fichier appelé fichier d’état.
#6. Quels sont les avantages de l’état de Terraform ?
L’état de Terraform permet de lier les ressources réelles à la configuration, de suivre les métadonnées et d’optimiser les performances lors de la planification de changements pour des infrastructures complexes. Il constitue un élément essentiel de Terraform.
#7. Qu’est-ce que le backend de Terraform ?
Le backend de Terraform est la plateforme où sont stockées les données d’état. Par défaut, Terraform utilise un backend local qui stocke l’état sous forme de fichier sur votre disque. Les autres backends proposés sont des services de stockage distant.
#8. Qu’est-ce qu’un fournisseur dans Terraform ?
Les fournisseurs Terraform sont des plugins qui permettent à Terraform d’interagir avec les fournisseurs de cloud, de SaaS et d’autres API. Par exemple, pour déployer de l’infrastructure sur AWS, il faut déclarer un fournisseur AWS dans les fichiers de configuration.
#9. Qui assure la maintenance des fournisseurs Terraform ?
Les fournisseurs sont distribués indépendamment de Terraform. Tout utilisateur peut créer ses propres fournisseurs. Certains fournisseurs standards sont maintenus par Hashicorp.
#10. Qu’est-ce que Sentinel ?
Sentinel est un outil de type « policy as code » qui permet d’appliquer des configurations standard pour les ressources déployées par Terraform. Les organisations peuvent l’utiliser pour garantir la conformité et la gouvernance.
#11. Qu’est-ce qu’un module dans Terraform ?
Un module Terraform est un conteneur standard pour plusieurs ressources utilisées ensemble pour provisionner et configurer des éléments. Par exemple, il est possible de créer un « module VPC » pour déployer un VPC standard et des ressources associées, comme des sous-réseaux ou des passerelles internet. Les modules peuvent être partagés publiquement via le registre des modules ou de manière privée via un registre privé.
#12. Quels sont les avantages des modules dans Terraform ?
Les modules Terraform permettent de créer une abstraction logique sur un ensemble de ressources. Ils facilitent la maintenance, la réutilisation de configurations standard et le partage de ces configurations avec les équipes pour déployer des ressources de manière uniforme.
#13. Qu’est-ce que le registre de modules privés ?
Le registre de modules privés de Terraform Cloud permet de partager des modules Terraform au sein d’une organisation.
Questions avancées et réponses lors d’entretiens sur Terraform
#14. Comment exporter des données d’un module à un autre ?
L’exportation de données d’un module se fait par l’utilisation de blocs de sortie dans les fichiers de configuration. Ces données peuvent ensuite être transmises en tant que paramètre au module de destination.
#15. Comment définir les dépendances dans Terraform ?
Terraform intègre une gestion des dépendances, qui peuvent être implicites ou explicites.
Les dépendances implicites sont automatiquement détectées par Terraform, notamment lorsqu’une ressource B utilise le résultat d’une ressource A. Terraform comprend alors que la ressource B doit être créée après la ressource A.
Les dépendances explicites sont utilisées lorsque deux ressources dépendent l’une de l’autre sans partager de sortie. Elles se définissent avec le paramètre « depend_on » dans le bloc de configuration.
#16. Que sont les provisionneurs dans Terraform ?
Les provisionneurs sont des ressources utilisées pour exécuter des scripts lors de la création ou destruction de ressources. On distingue deux types :
- local-exec : exécute un script sur la machine hébergeant Terraform.
- remote-exec : exécute un script sur une ressource distante après sa création.
L’utilisation des provisionneurs doit être considérée comme un dernier recours dans Terraform.
#17. Qu’est-ce que le bloc de données externe dans Terraform ?
Similaire au fournisseur d’exécution locale, le bloc de données externe sert à exécuter des scripts sur la machine Terraform. La différence réside dans le fait que les scripts du bloc de données externe peuvent renvoyer des données en JSON, ce que ne font pas les provisionneurs. Son utilisation doit être un dernier recours.
#18. Comment deux personnes peuvent-elles créer des infrastructures différentes avec le même répertoire de travail dans Terraform Cloud ?
En utilisant des espaces de travail distincts. Chaque espace de travail dispose de son propre fichier d’état. Tant que les ressources ne se chevauchent pas, les deux utilisateurs peuvent créer des infrastructures différentes avec le même code.
#19. Que se passe-t-il si plusieurs ingénieurs déploient de l’infrastructure avec le même fichier d’état ?
Terraform a une fonctionnalité de « verrouillage d’état » qui empêche les modifications concurrentes du fichier d’état et les risques de corruption. Cette fonctionnalité n’est pas compatible avec tous les backends, il est donc important de choisir le bon backend si elle est requise.
#20. Qu’est-ce qu’une ressource nulle dans Terraform ?
Une ressource nulle dans Terraform est un bloc qui s’exécute comme une ressource standard, mais sans créer de ressource réelle. Bien que cela puisse sembler inutile, cette ressource peut être utile dans certaines situations pour contourner les limitations de Terraform.
#21. Comment utiliser un même fournisseur avec différentes configurations dans Terraform ?
En utilisant l’argument « alias » dans le bloc « provider ».
#22. Que se passe-t-il si vous exécutez « terraform apply » avec un fichier de configuration sans ressources ?
Terraform supprimera toutes les ressources. Une exécution vide équivaut à une commande « terraform destroy ».
#23. Que se passe-t-il si une ressource est créée, mais que le provisionnement échoue ?
C’est un cas rare, mais la ressource sera marquée comme corrompue et devra être recréée en relançant Terraform.
#24. Quelle valeur de la variable TF_LOG offre le niveau de journalisation le plus détaillé ?
La valeur « TRACE » est la plus détaillée, et la valeur par défaut de la variable TF_LOG.
#25. Comment importer des ressources existantes sous la gestion de Terraform ?
En utilisant la commande « terraform import ».
#26. Quelle commande permet de prévisualiser le plan d’exécution de Terraform ?
La commande « terraform plan » génère le plan d’exécution des modifications que Terraform apportera à l’infrastructure.
#27. Quelle commande réconcilie l’état de Terraform avec l’infrastructure réelle ?
La commande « terraform apply -refresh-only » sert à synchroniser l’état de Terraform avec l’infrastructure réelle. Il s’agit de la nouvelle alternative à « terraform refresh », désormais obsolète.
#28. Comment basculer entre les espaces de travail dans Terraform Cloud ?
La commande « terraform workspace select
#29. Quelle commande valide la syntaxe des fichiers de configuration Terraform ?
La commande « terraform validate » vérifie si la configuration est syntaxiquement valide et cohérente.
#30. Quelle commande crée de nouveaux espaces de travail dans Terraform Cloud ?
La commande « terraform workspace new
Autres commandes Terraform importantes pour les entretiens techniques :
- terraform init : initialise les backends distants, télécharge les fournisseurs et les modules distants définis dans la configuration.
- terraform init -upgrade : met à jour les fournisseurs téléchargés.
- terraform plan : génère le plan d’exécution pour la création ou la mise à jour de l’infrastructure.
- terraform apply : crée ou met à jour l’infrastructure après confirmation de l’utilisateur.
- terraform apply –auto-approve : crée ou met à jour l’infrastructure en ignorant l’étape de confirmation utilisateur.
- terraform destroy : supprime l’infrastructure après confirmation de l’utilisateur.
- terraform destroy –auto-approve : supprime l’infrastructure sans confirmation de l’utilisateur.
- terraform fmt : analyse le répertoire actuel et formate les fichiers de configuration selon les normes de style et de format canonique HCP.
- terraform fmt –recursive : analyse le répertoire et les sous-répertoires et formate les fichiers selon les normes HCP.
- terraform show : fournit une sortie lisible à partir d’un fichier d’état ou d’un plan.
Nous espérons que ces informations vous seront utiles pour décrocher un emploi dans le domaine de Terraform.