A la préhistoire, disons il y a 10 ans…, déployer et monitorer une infrastructure informatique nécessitait des moyens humains et techniques considérables. 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.
À 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 666 nœuds Hadoop 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.
Qu’est-ce que l’infrastructure-as-Code ?
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).
L’objectif est le même que les scripts logiciels classiques destinés à automatiser des tâches. Les tâches, ce sont les processus de création des éléments de notre infrastructure. Ces processus doivent être répétés de nombreuses fois sur plusieurs serveurs. Ici, au lieu d’avoir un script écrit avec un langage de programmation, vous aurez un fichier de configuration écrit avec un langage descriptif qui vous donnera la possibilité de coder l’infrastructure et le processus de déploiement.
Dans Infrastructure-as-Code il y a le mot « Code »
L’avantage de gérer son infrastructure avec du code est de bénéficier de toutes les pratiques du monde du génie logiciel tels que l’aspect reproductibilité, sécuritaire et collaboratif.
Concernant la reproductibilité, l’IaC vous permet de créer facilement sur différents environnements la même infrastructure, ceci est bien utile en particulier lorsque votre projet est complexe. Automatiser cette création avec du code permettrait de gagner énormément de temps et d’argent. Il est facile aussi de reproduire la même infrastructure avec des paramètres différents comme par exemple créer dans GCP un IAM plus permissif pour l’environnement de développement.
En matière de sécurité, passer par du code pour créer son infrastructure vous offre la possibilité d’analyser périodiquement vos environnements pour détecter les différences entre les configurations décrites et les environnements réels, autrement dit, 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.
Enfin, l’utilisation de code nous permet d’utiliser des outils tel que Git, dont le but est de faciliter la collaboration entre contributeurs d’un projet. On peut y travailler à plusieurs, savoir qui a fait quoi, récupérer les modifications des autres et les fusionner aux nôtres.
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.
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).
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.
Dans le script suivant nous déclarons le 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.
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 !
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.