Voici 28 questions et réponses d’entretien en temps réel sur Terraform avec une liste et une explication des commandes importantes souvent demandées lors des entretiens.

L’augmentation de l’utilisation des technologies cloud a ouvert de nombreuses opportunités dans le monde du DevOps. A l’avenir, les technologies cloud seront un sujet courant dans les questions d’entretien, et une connaissance de base des outils cloud et Infrastructure as a Code(IAC) sera un must pour les rôles DevOps.

Qu’est-ce que Terraform ?

Terraform est l’un des outils IAC les plus populaires, utilisé par tous les ingénieurs cloud. Il nous permet de définir des ressources dans le nuage et sur site dans des fichiers de configuration lisibles par l’homme et de provisionner ainsi ces ressources de manière programmatique. La caractéristique la plus remarquable de Terraform est que, contrairement à la plupart des outils IAC existants, il n’est pas limité à un seul fournisseur de cloud. Vous pouvez utiliser Terraform pour exécuter vos applications sur plusieurs plateformes cloud simultanément.

Au cas où vous vous demanderiez quelles sont les technologies prises en charge par Terraform, voici une petite liste :

Pour progresser dans votre carrière en tant qu’ingénieur DevOps, architecte Cloud, développeur ou administrateur, vous devrez répondre à des questions d’entretien sur Terraform. Nous avons compilé une liste des meilleures questions d’entretien sur Terraform qui devraient vous aider à améliorer vos connaissances sur Terraform.

Questions générales d’entretien sur Terraform et réponses

#1. Qu’entendez-vous par Terraform ?

Terraform est un outil IAC open-source créé par HashiCorp. Il est utilisé pour créer, mettre à jour, supprimer et versionner votre infrastructure sur de multiples plateformes cloud.

#2. Quelles sont les raisons de choisir Terraform pour DevOps ?

L’utilisation de Terraform pour le provisionnement de l’infrastructure ne laisse aucune place aux erreurs humaines, ce qui améliore la qualité, la cohérence et l’efficacité de l’infrastructure Cloud et on-prem. Terraform utilise le langage HCL, qui est assez similaire à JSON et facile à apprendre et à utiliser. Contrairement aux autres outils IAC proposés par les fournisseurs de cloud, comme Cloudformation pour AWS, nous pouvons utiliser Terraform avec un certain nombre de plateformes cloud simultanément. Cela évite d’avoir à apprendre plusieurs outils de CAI et améliore la portée de la collaboration.

#3. Comment fonctionne Terraform ?

Terraform utilise des plugins appelés fournisseurs Terraform pour interagir avec les API des plateformes cloud et fournir nos ressources. En tant qu’utilisateur final, le flux de travail de Terraform comporte trois étapes.

Écrire: Créer l’infrastructure sous forme de code.

Planifier: Prévisualisez les modifications que Terraform va apporter avant de les appliquer.

Appliquer: Provisionnez l’infrastructure et appliquez les changements.

#4. Qu’entendez-vous par Terraform Cloud ?

Terraform Cloud est un environnement distant optimisé pour le flux de travail Terraform. Il offre des fonctionnalités telles que les espaces de travail et le verrouillage des états, ce qui permet aux membres de grandes équipes de collaborer.

#5. Qu’entendez-vous par ” État ” dans Terraform ?

En tant qu’outil IAC, Terraform doit connaître l’état actuel des configurations et de l’infrastructure qu’il gère. Terraform stocke cette information dans un fichier appelé fichier d’état.

#6. Quel est l’avantage du Terraform State ?

Le fichier Terraform State permet à Terraform de faire correspondre les ressources du monde réel à votre configuration, de garder une trace des métadonnées et d’améliorer les performances lors de la planification des changements pour les infrastructures complexes. Il s’agit d’un composant essentiel de Terraform.

#7. Qu’entendez-vous par Terraform Backend ?

Le backend de Terraform est la plateforme où sont stockés les instantanés d’état de Terraform. Par défaut, Terraform utilise un backend appelé local pour stocker l’état dans un fichier local sur votre disque. Tous les autres backends pris en charge sont des services de stockage à distance.

#8. Qu’est-ce qu’un fournisseur dans Terraform ?

Les fournisseurs dans Terraform sont des plugins qui permettent à Terraform d’interagir avec des fournisseurs de cloud, des fournisseurs SaaS et d’autres API. Par exemple, si nous prévoyons d’utiliser Terraform pour provisionner une infrastructure sur AWS, nous devrons déclarer un fournisseur AWS dans nos fichiers de configuration.

#9. Qui assure la maintenance des fournisseurs Terraform ?

Les fournisseurs sont distribués séparément de Terraform lui-même. En tant qu’utilisateur de Terraform, n’importe qui peut développer ses propres fournisseurs. Certains fournisseurs standards sont maintenus explicitement par Hashicorp.

#10. Qu’est-ce que Sentinel ?

Sentinel est un outil de politique en tant que code utilisé pour renforcer les configurations standard pour les ressources déployées par Terraform. Il peut être utilisé par les organisations à des fins de conformité et de gouvernance.

#11. Qu’entendez-vous par modules dans Terraform ?

Un module Terraform est un conteneur standard pour plusieurs ressources utilisées ensemble pour provisionner et configurer des ressources. Par exemple, vous pouvez créer un ” module VPC ” pour votre organisation qui provisionne un VPC standard et d’autres ressources comme des sous-réseaux et des passerelles Internet. Les modules peuvent être partagés publiquement via le registre des modules publics et en privé via le registre des modules privés.

#12. Quel est l’avantage d’utiliser des modules dans Terraform ?

Les modules Terraform nous permettent de créer une abstraction logique au sommet d’un ensemble de ressources. L’utilisation de modules nous permet de maintenir et de réutiliser une configuration standard pour les ressources. Ils peuvent être versionnés et partagés avec les membres de vos équipes pour provisionner les ressources d’une manière standard.

#13. Qu’est-ce que le Private Module Registry ?

La fonction Private Module Registry de Terraform Cloud nous permet de partager des modules Terraform au sein de notre organisation.

Questions d’entrevue avancées sur Terraform et réponses

#14. Comment pouvons-nous exporter des données d’un module à un autre ?

Nous pouvons exporter des données d’un module en définissant des blocs de sortie dans les fichiers de configuration du module. Ces données peuvent ensuite être transférées en tant que paramètre au module de destination.

#13. Comment pouvez-vous définir des dépendances dans Terraform ?

Terraform dispose d’une gestion des dépendances intégrée. Terraform propose deux types de dépendances entre les ressources : les dépendances implicites et les dépendances explicites.

Les dépendances implicites, comme leur nom l’indique, sont détectées automatiquement par Terraform. C’est le cas lorsque la sortie d’une “ressource A” est utilisée dans une “ressource B”. Terraform détecte automatiquement que la “ressource B” ne doit être créée qu’après la “ressource A”

Des dépendances explicites peuvent être spécifiées dans les cas où deux ressources sont dépendantes en interne l’une de l’autre sans partager de sorties. Cela peut être fait en utilisant le paramètre depends_on dans le bloc de configuration.

#14. Que sont les provisionneurs dans Terraform ?

Les provisionneurs sont des ressources Terraform utilisées pour exécuter des scripts dans le cadre de la création ou de la destruction de ressources. Il existe deux types de provisionneurs dans Terraform :

  • local-exec : invoque un script sur la machine qui exécute Terraform.
  • remote- exec : invoque un script sur une ressource distante après sa création.

Les Provisioners ne doivent être utilisés qu’en dernier recours dans Terraform.

#15. Qu’est-ce que le bloc de données externes dans Terraform ?

Tout comme le provisionneur local-exec, le bloc de données externes peut être utilisé pour exécuter des scripts sur des machines exécutant Terraform. La différence entre un provisionneur et le bloc de données externes est que les scripts du bloc de données externes peuvent renvoyer des données au format JSON, alors que les provisionneurs ne peuvent renvoyer aucun résultat. Il est important de noter que les blocs de données externes sont également destinés à être utilisés en dernier recours et ne devraient pas être utilisés s’il existe une meilleure alternative.

#16. Comment deux personnes utilisant le nuage Terraform peuvent-elles créer deux ensembles différents d’infrastructure en utilisant le même répertoire de travail ?

En utilisant des espaces de travail différents. Ces utilisateurs peuvent lancer des exécutions Terraform dans deux espaces de travail distincts. Chaque espace de travail a son propre fichier d’état, donc tant que les ressources ne se chevauchent pas, les deux utilisateurs peuvent approvisionner avec succès deux ensembles d’infrastructure différents en utilisant le même code.

#17. Que se passe-t-il lorsque plusieurs ingénieurs commencent à déployer une infrastructure en utilisant le même fichier d’état ?

Terraform dispose d’une fonctionnalité très importante appelée “state locking”. Cette fonctionnalité garantit qu’aucune modification n’est apportée au fichier d’état au cours d’une exécution et empêche que le fichier d’état ne soit corrompu. Il est important de noter que tous les backends Terraform ne prennent pas en charge la fonctionnalité de verrouillage d’état. Vous devez choisir le bon backend si cette fonctionnalité est nécessaire.

#18. Qu’est-ce qu’une ressource nulle dans Terraform ?

Une ressource terraform null est une configuration qui s’exécute comme un bloc de ressources terraform standard mais qui ne crée aucune ressource. Cela peut sembler être une ressource étrange et inutile, mais elle peut être utile dans diverses situations pour contourner les limitations de Terraform.

#19. Comment pouvez-vous utiliser le même fournisseur dans Terraform avec différentes configurations ?

En utilisant l’argument alias dans le bloc du fournisseur.

#20. Vous avez un fichier de configuration Terraform sans ressources. Que se passe-t-il lorsque vous exécutez la commande terraform apply?

Terraform détruira toutes les ressources. Démarrer un run vide avec la commande terraform apply est exactement la même chose que de démarrer le run terraform destroy.

#21. Que se passe-t-il si une ressource a été créée avec succès dans terraform mais a échoué lors du provisionnement ?

C’est un scénario peu probable, mais lorsque cela se produit, la ressource est marquée comme tainted et peut être recréée en redémarrant l’exécution terraform.

#22. Quelle valeur de la variable TF_LOG fournit la journalisation la plus verbeuse ?

TRACE est la valeur la plus verbeuse et la valeur par défaut de la variable TF_LOG.

#23. Comment pouvez-vous importer des ressources existantes sous Terraform Management ?

En utilisant la commande terraform import.

#24. Quelle commande peut être utilisée pour prévisualiser le plan d’exécution terraform ?

La commande terraform plan génère le plan d’exécution des changements que Terraform va apporter à l’infrastructure.

#25. Quelle commande peut être utilisée pour réconcilier l’état de Terraform avec l’infrastructure réelle ?

La commande terraform apply -refresh-only est utilisée pour réconcilier l’état de Terraform avec l’infrastructure réelle. C’est la nouvelle alternative à la commande terraform refresh, qui est maintenant obsolète.

#26. Quelle commande peut être utilisée pour passer d’un espace de travail à l’autre lorsque vous utilisez Terraform Cloud ?

La commande terraform workspace select <workspace-name> est utilisée pour choisir un espace de travail différent.

#27. Quelle commande est utilisée pour effectuer une validation syntaxique sur les fichiers de configuration de Terraform ?

La commande terraform validate est utilisée pour vérifier si une configuration est syntaxiquement valide et cohérente en interne.

#28. Quelle commande est utilisée pour créer de nouveaux espaces de travail dans le nuage Terraform ?

La commande terraform workspace new <nom de l'espace de travail> est utilisée pour créer un nouvel espace de travail.Quelques 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 votre configuration.
  • terraform init-upgrade : permet de mettre à jour les fournisseurs téléchargés existants.
  • terraformplan : génère le plan d’exécution pour la création ou la mise à jour de l’infrastructure.
  • terraformapply : crée ou met à jour l’infrastructure après avoir demandé confirmation à l’utilisateur.
  • terraformapply –auto-approve : crée ou met à jour l’infrastructure ; l’étape d’approbation de l’utilisateur est sautée.
  • terraformdestroy : supprime l’infrastructure après avoir demandé la confirmation de l’utilisateur.
  • terraformdestroy –auto-approve : supprime l’infrastructure ; l’étape d’approbation par l’utilisateur est sautée.
  • terraformfmt: recherche dans le répertoire courant les fichiers de configuration et les formate selon le style et le format canonique HCP.
  • terraformfmt –recursive : analyse le répertoire courant ainsi que les sous-répertoires pour les fichiers de configuration et les formate selon le style et le format canonique HCP.
  • terraform show : fournit une sortie lisible par l’homme à partir d’un fichier d’état ou de plan.
  • J’espère que les informations ci-dessus vous aideront à décrocher un emploi dans Terraform.