Gestion de l'état de Terraform

Gestion De L Etat De Terraform



L'infrastructure en tant que code est la procédure de gestion et d'approvisionnement de l'infrastructure informatique par le biais d'un code qui aide à surmonter la complexité de l'approvisionnement à grande échelle et de la gestion manuelle et répétée des ressources informatiques. Terraform by HashiCorp est un outil IaC open source qui utilise un système de gestion d'état pour suivre les modifications et gérer les fichiers d'état. Son système de gestion de l'état est l'une de ses principales caractéristiques et permet de suivre efficacement les modifications de l'infrastructure. Cet article explique comment fonctionne la gestion de l'état de Terraform et comment l'utiliser efficacement.

État de Terraform

L'état actuel de notre infrastructure, qui comprend des informations sur les ressources que nous définissons dans notre code, est enregistré en tant qu'état Terraform. Terraform utilise cet état pour déterminer les modifications nécessaires pour amener notre infrastructure dans l'état souhaité lorsqu'une commande telle que Terraform « appliquer » est exécutée. Après avoir exécuté les modifications (création, modification et suppression), Terraform met à jour le fichier d'état avec le nouvel état de votre infrastructure.

Pour bien saisir le concept, prenons un exemple :







Ressource 'fichier_local' 'John' {

nom de fichier = '/home/Jean.txt'

contenu = 'J'adore les animaux'

}

Ici, nous créons un fichier Terraform appelé 'main.tf'. A l'intérieur se trouve une ressource de type local_file nommée « John » avec deux attributs : filename et content.



Le type de ressource local_file est utilisé pour créer un fichier sur le système de fichiers local de la machine sur laquelle Terraform est exécuté. Dans ce cas, le fichier est créé avec le nom « John.txt » dans le répertoire « /home », et le contenu du fichier est « I love pets ».



Maintenant, exécutons le flux Terraform - Terraform init, plan et apply. Lorsque nous exécutons pour la première fois la commande Terraform 'apply' dans notre projet, Terraform crée automatiquement le fichier d'état appelé 'terraform.tfstate' dans le répertoire racine de notre projet Terraform. Il comprend toutes les informations sur l'état actuel de notre infrastructure au format JSON.





Voici le fichier d'état de la ressource que nous avons créé :



Maintenant, disons que nous voulons supprimer la ressource actuelle et créer une autre ressource de type random_pet nommée 'my-pet' avec des attributs - préfixe, longueur et séparateur.

Ressource 'random_pet' 'mon animal de compagnie' {

préfixe = 'M'

longueur = '1'

séparateur = '.'

}

Ici, nous supprimons la ressource local_file et ajoutons une ressource random_pet. Notre état souhaité est de n'avoir que la ressource random_pet. Exécutons les commandes Terraform init, plan et apply.

Comme le montre l'illustration précédente, lorsque nous exécutons la commande Terraform 'plan', elle affiche les actions que Terraform effectue pour atteindre l'état souhaité. Lorsque nous exécutons la commande 'apply' de Terraform, la ressource 'my-pet' est créée et la ressource 'John' est supprimée. De plus, le fichier d'état est mis à jour en détruisant les métadonnées de la ressource local_file et en ajoutant les métadonnées de la ressource random_pet.

Voici le contenu du fichier d'état mis à jour :

Comment Terraform fonctionne-t-il l'état de gestion ?

À l'aide d'un backend, Terraform gère l'état. Un backend est un service distant ou un système de fichiers local que Terraform utilise pour stocker et récupérer les données d'état. En fonction de nos besoins, nous pouvons choisir un backend adapté.

Terraform prend en charge plusieurs backends intégrés, notamment local, Amazon S3, HashiCorp Consul, Vault et Azure Storage. Nous pouvons également créer un backend personnalisé si aucune des options intégrées ne répond aux besoins.

Dans les exemples précédents, les fichiers d'état étaient stockés dans le backend local. Mais le stocker dans un backend distant est la meilleure pratique car il invoque la collaboration et augmente la sécurité.

Importance de la gestion de l'état

La gestion des états dans des outils comme Terraform est essentielle en raison des points clés suivants :

Déterminez l'état actuel de votre infrastructure

Le fichier d'état fournit un instantané précis des ressources existantes et de leurs attributs actuels. Ces données sont indispensables pour comprendre notre infrastructure et s'assurer qu'elle est dans l'état souhaité.

Suivre les modifications apportées à l'infrastructure au fil du temps

Chaque fois que nous appliquons les modifications à l'aide de Terraform, le fichier d'état est mis à jour pour refléter le nouvel état de notre infrastructure. Cela nous permet de suivre l'évolution de notre infrastructure et fournit une piste d'audit de tous les changements.

Automatisation

Définir votre état d'infrastructure souhaité dans le code nous permet d'automatiser la création et la gestion de notre infrastructure. La gestion de l'État garantit que notre infrastructure reste souhaitée, même si les modifications sont apportées au fil du temps.

Gérer les dépendances

Avec Terraform, nous pouvons définir les relations entre les ressources dans notre fichier de configuration, et Terraform utilise le fichier d'état pour s'assurer que ces relations sont maintenues. Cela garantit que les modifications apportées à une ressource n'affectent pas par inadvertance d'autres ressources.

reprise après sinistre

En cas de panne ou de panne, nous pouvons utiliser le fichier d'état pour recréer l'infrastructure dans un état connu. Cela peut aider à minimiser les temps d'arrêt et garantir que notre infrastructure est restaurée rapidement et efficacement.

Meilleures pratiques pour une gestion efficace de l'état

Voici quelques conseils que nous pouvons suivre pour gérer efficacement les états :

Utiliser un backend distant

Un backend distant offre plusieurs avantages par rapport à un backend local. Il permet à plusieurs utilisateurs de travailler sur la même infrastructure et ils offrent également une meilleure sécurité et fiabilité que les backends locaux.

Activer la gestion des versions

En versionnant le fichier d'état, nous pouvons suivre les modifications au fil du temps et revenir à une version précédente si nécessaire. En outre, la gestion des versions fournit une piste d'audit et permet de s'assurer que les modifications sont correctement documentées.

Utiliser un mécanisme de verrouillage

Nous pouvons utiliser un mécanisme de verrouillage qui permet d'éviter les conflits lorsque plusieurs utilisateurs travaillent sur la même infrastructure. Terraform prend en charge plusieurs outils de verrouillage, notamment DynamoDB, Consul et S3.

Sauvegardez votre fichier d'état

Nous pouvons récupérer de la corruption des données si nous sauvegardons régulièrement le fichier d'état. Nous devons stocker les sauvegardes dans un emplacement sécurisé et respecter toutes les exigences de conformité pertinentes.

Conclusion

Nous avons eu une brève introduction à IaC et Terraform tout en comprenant les fichiers d'état et en les gérant à travers des exemples. Comprendre comment Terraform fonctionne dans l'état peut nous aider à éviter les pièges courants et à garantir que notre infrastructure reste souhaitée. En suivant les meilleures pratiques de gestion des états, nous pouvons utiliser Terraform en toute confiance et efficacement.