Codez votre infrastructure ! Terraformez votre infra data GCP

1 avril 2021

A la préhistoire, disons il y a 10 ans…, monter et gérer une infrastructure physique était un fardeau énorme, qui nécessitait non seulement des équipes d’experts pour le faire, mais qui prenait aussi du temps… beaucoup de temps. Dans cet article, nous allons aborder le concept de l’Infrastructure-as-Code et son application dans un environnement Google Cloud Platform (GCP) BigQuery grâce à l’outil Terraform. Nous verrons ainsi un exemple de création d’un dataset et d’une table.

Codez votre infrastructure ! Terraformez votre infra data GCP

À l’ère du cloud computing moderne, vous pouvez maintenant déployer instantanément des centaines d’ordinateurs en un seul clic comme illustré dans la capture ci-dessous. Grâce à GCP par exemple, il est parfaitement possible de créer un pool de 500 nœuds GKE en une fois, chose qui était impossible avant l’arrivée du cloud et de ce genre d’outils. Avant cela, les architectes d’infrastructure devaient créer les instances (physiquement ou virtuellement), les installer une par une puis les configurer.

Création de 500 cluster GKE sur GCP

Qu’est-ce que l’infrastructure-as-Code (IaC) ?

04 mai
2021

Data Sharing & Data Marketplace : Partagez et accédez à un monde de données

Développez vos connaissances #Data & #IA en 45′ chrono, inscrivez-vous !

L’Infrastructure as code (IaC) (littéralement : « infrastructure en tant que code ») est un ensemble de mécanismes permettant de gérer, par des fichiers descripteurs ou des scripts (code informatique), une infrastructure (informatique) virtuelle (source : Wikipédia).

Ainsi, au lieu de placer un serveur physique sur un rack, d’installer tous les câbles, de configurer le réseau, d’installer tout le système d’exploitation requis, vous pouvez écrire du code pour faire tout cela.

Ce code vous permettra de configurer votre infrastructure et de la déployer. Vous pourrez ensuite configurer une automatisation pour l’exécuter à chaque validation.

Pourquoi opter pour une IaC ?

Reproductibilité

L’IaC vous permet de créer facilement différents environnements, en particulier lorsque votre projet est complexe et qu’il y a beaucoup de pièces mobiles (des modules). Par exemple, après avoir configuré un environnement de développement avec plusieurs projets, VPC (Virtual Private Cloud), stockage, instances de calcul et IAM (Identity & Access Management), il est contre-productif de refaire la même chose pour l’environnement de recette et de production.

Avec l’IaC, vous pouvez répliquer votre environnement avec quelques modifications mineures de votre base de code. Vous pouvez même personnaliser votre environnement en fonction de vos besoins. Par exemple, il vous est possible de configurer différents types de machines pour la production et la recette, ou de mettre en place un IAM plus permissif pour l’environnement de développement.

Sécurité

Sur un grand projet, vous pouvez avoir des environnements avec des autorisations et des stratégies complexes. Non seulement vous devez vous soucier de la conception et de la configuration de ces environnements, mais aussi de l’application des politiques de sécurité et des autorisations.

Avec l’IaC, chaque modification de votre environnement est versionnée, vous savez donc qui effectue quelles modifications (en supposant que vous limitez les autorisations d’administrateur à votre service IaC uniquement).

Vous pouvez également analyser périodiquement vos environnements pour détecter les différences entre les configurations et les environnements réels, par exemple, entre le code définissant l’infrastructure en production et l’infrastructure réellement en production. La plupart des services IaC seraient alors en mesure de rétablir les configurations de votre environnement s’ils détectent des alternances.

Collaboration

Lorsque vos infrastructures sont gérées par du code, vous avez la possibilité de les partager entre équipes ou de les utiliser pour des projets ultérieurs. Vous pouvez également générer automatiquement une documentation d’infrastructure basée sur les configurations.

Qu’est-ce que Terraform ?

La terraformation (littéralement, « Sculpture de la Terre ») d’une planète, d’une lune ou d’un autre corps est le processus consistant à modifier délibérément son atmosphère, sa température, sa topographie de surface ou son écologie pour qu’elle soit similaire à l’environnement de la Terre pour la rendre habitable.

Infrastructure-as-code (IaC) - Terraformation

Lorsqu’une organisation commence à construire son infrastructure sur un cloud public, tout ce qu’elle obtient est tel un paysage lunaire. Il est de la responsabilité de l’équipe DevOps de l’organisation de créer un écosystème d’infrastructure de ressources cloud où différentes équipes peuvent « habiter » et déployer leur travail. Grâce à Terraform la création de cet écosystème est grandement facilitée.

Terraform est un outil qui permet de créer, de modifier et de gérer les versions d’une infrastructure de manière sûre et efficace. Il s’inscrit dans la mouvance Infrastructure as Code. En outre, Terraform peut gérer des fournisseurs de services existants et populaires ainsi que des solutions internes personnalisées. Il permet de décrire votre infrastructure et les services qui gravitent autour sous la forme de fichiers de configuration.

Coder et déployer son infrastructure data GCP avec Terraform

Dans ce chapitre nous allons voir concrètement à quoi ressemble le code utilisé pour créer et déployer une infrastructure cloud. Bien-sûr, ceci n’est pas un tutoriel, l’objectif de cet article est de vulgariser l’IaC et de vous montrer par l’exemple qu’il existe des outils pour l’appliquer (dans notre cas Terraform). De plus, nous partons du principe qu’une bonne partie de notre infrastructure existe déjà (projet, VPC, Loadbalancer, etc.), nous allons donc simplement l’enrichir avec quelques ressources (un dataset et une table).

Logos Terraform et GCP

Voici un exemple de création d’un dataset et d’une table dans GCP via Terraform. J’ai fait en sorte d’indiquer un maximum de commentaires dans le code pour expliquer les étapes de création des ressources.

Commençons par définir quelques configurations de base.

Terraform avec GCP - Configuration de base

Dans le script suivant nous déclarons le dataset qui hébergera la table que nous voulons créer.

Déclaration du dataset qui hébergera la table que nous voulons créer.

Pour la bonne pratique, créer le schéma de la table dans un fichier json externe aux fichiers terraform (pour la réutilisabilité et la factorisation du code).

Enfin, nous créons notre table.

Terraform avec GCP - Création de la table

Voilà, un bout de notre infrastructure cloud a été décrit avec du code prêt à être exécuté et déployé.

Terraform a un objectif bien défini, créer et gérer une infrastructure, et il le fait bien. Nous n’avons pas abordé les concepts avancés mais, en allant plus loin, en lisant la documentation officielle, vous trouverez quelques outils qui optimiseront la manière dont vous pourrez organiser vos projets d’infrastructure, tels que l’utilisation des modules pour maximiser la réutilisation du code dans ces derniers. Vous trouverez tout ça ici. A vous de jouer !

Fares Daoud
Fares Daoud Consultant senior - Lead Data Developer
Business & Decision

Passionné par l’informatique et les nouvelles technologies, j’ai toujours été fasciné par la puissance des ordinateurs et par l’automatisation des tâches. J’ai pu acquérir au fil des ans une expérience significative en audit et en exploitation des systèmes d’information. Ce sont mon expérience et ma…

En savoir plus

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Votre adresse de messagerie est uniquement utilisée par Business & Decision, responsable de traitement, aux fins de traitement de votre demande et d’envoi de toute communication de Business & Decision en relation avec votre demande uniquement. En savoir plus sur la gestion de vos données et vos droits.