Qu'est-ce que l'Infrastructure as Code (IaC) ?

L'Infrastructure as Code (IaC) est une méthodologie de gestion et de provisionnement de l'infrastructure informatique. Elle s'appuie sur des fichiers de définition lisibles par machine pour la configuration, plutôt que sur des ajustements manuels du matériel physique ou des outils de configuration interactifs. En traitant la configuration de l'infrastructure de la même manière que le code d'application, les équipes peuvent automatiser le déploiement de réseaux, de machines virtuelles, de clusters Kubernetes, de bases de données et d'équilibreurs de charge de manière rapide et fiable. Elle fait partie des pratiques DevOps modernes et aide les entreprises à évoluer de façon cohérente et rapide.

Fonctionnement de l'Infrastructure as Code

L'IaC automatise le processus de provisionnement à l'aide de code, ce qui évite d'avoir à configurer manuellement les paramètres dans une console cloud. Tout d'abord, les développeurs définissent les spécifications d'infrastructure souhaitées dans des fichiers de configuration, qui sont généralement stockés dans un système de contrôle des versions. Un outil d'automatisation, tel que Terraform, traite ensuite ces fichiers et effectue les appels d'API nécessaires au fournisseur de services cloud pour créer, mettre à jour ou supprimer les ressources réelles. Ce flux de travail suit généralement un chemin qui va du code (définition) au contrôle des versions, en passant par un pipeline CI/CD, pour aboutir au provisionnement.

Infographie sur le workflow d'Infrastructure as Code

Déclaratif ou impératif

Lorsqu'ils implémentent l'IaC, les équipes ont généralement le choix entre deux approches : déclarative et impérative. La principale différence réside dans le fait que vous vous concentrez sur le résultat final ou sur les étapes à suivre pour y parvenir.

Méthode

Description

Exemple

Phrase déclarative


Vous définissez l'état final souhaité. L'outil détermine les étapes nécessaires pour atteindre cet état. C'est la norme moderne pour les outils tels que Terraform et Kubernetes.

"Je veux trois machines virtuelles avec 8 Go de RAM chacune."

Impératif

Vous définissez comment modifier l'infrastructure en listant des commandes ou des scripts spécifiques à exécuter dans l'ordre.

"Exécutez le script A pour démarrer le serveur 1. Exécutez ensuite le script B pour configurer le réseau. Ensuite, exécutez le script C…"

Méthode

Description

Exemple

Phrase déclarative


Vous définissez l'état final souhaité. L'outil détermine les étapes nécessaires pour atteindre cet état. C'est la norme moderne pour les outils tels que Terraform et Kubernetes.

"Je veux trois machines virtuelles avec 8 Go de RAM chacune."

Impératif

Vous définissez comment modifier l'infrastructure en listant des commandes ou des scripts spécifiques à exécuter dans l'ordre.

"Exécutez le script A pour démarrer le serveur 1. Exécutez ensuite le script B pour configurer le réseau. Ensuite, exécutez le script C…"

Sécurité et analyse de l'IaC

À mesure que les définitions d'infrastructure sont déplacées dans des dépôts de code, les pratiques de sécurité doivent s'adapter pour protéger ces fichiers. La "sécurité IaC" et l'"analyse IaC" désignent la pratique consistant à analyser les fichiers de configuration pour détecter les failles avant le déploiement de l'infrastructure. C'est ce qu'on appelle la sécurité "Shift Left". Des outils spécialisés analysent le pipeline de code pour détecter les erreurs de configuration, comme les buckets de stockage ouverts au public ou les bases de données non chiffrées, ce qui empêche les risques de sécurité d'atteindre l'environnement de production.

Cas d'utilisation de l'IaC

En plus de prendre en charge les schémas de déploiement courants, tels que les applications de génération augmentée par récupération (RAG), l'IaC aide à résoudre les problèmes liés aux déploiements opérationnels complexes.

Les entreprises doivent souvent exécuter des charges de travail dans différents environnements. Avec un outil comme Terraform, une équipe peut utiliser un seul workflow de configuration pour déployer et gérer simultanément des ressources dans Google Cloud ou d'autres environnements cloud, ainsi que dans des centres de données sur site. Cela réduit la complexité liée à l'apprentissage de différents outils propriétaires pour chaque plate-forme.

Les développeurs ont souvent besoin d'endroits sûrs pour tester de nouvelles fonctionnalités. Avec l'IaC, une équipe peut créer un environnement de préproduction temporaire qui reflète exactement l'environnement de production, exécuter ses tests, puis détruire l'environnement immédiatement après. Cela permet de garantir la précision des tests tout en évitant les coûts liés à l'exécution d'un serveur de préproduction permanent 24h/24, 7j/7.

En cas de panne régionale catastrophique, la récupération manuelle peut prendre des jours. L'IaC permet la "reprise après sinistre en tant que code", ce qui permet à une organisation de reprovisionner rapidement l'intégralité de son infrastructure dans une autre région à l'aide de ses définitions de code existantes. Cela peut réduire considérablement les temps d'arrêt et assurer la continuité de l'activité.

Avantages de l'IaC

L'adoption de l'IaC peut offrir des avantages considérables aux entreprises qui cherchent à moderniser leurs opérations informatiques.

Vitesse

L'automatisation vous permet de déployer des environnements complexes en quelques minutes, au lieu de plusieurs jours ou semaines.

Cohérence

Comme le même code déploie le même environnement à chaque fois, l'IaC élimine la dérive de configuration, qui se produit lorsque les serveurs deviennent incohérents en raison de modifications manuelles ponctuelles.

Économies

Les équipes peuvent facilement désactiver les ressources inutilisées, comme les environnements de développement le week-end, ce qui permet de gérer les dépenses cloud.

Contrôle des versions

Comme l'infrastructure est définie sous forme de code, l'intégralité de l'historique des modifications apportées à votre infrastructure est stockée dans un seul emplacement. Cela permet de savoir plus facilement qui a modifié quoi et de revenir à une version précédente en cas de problème.

Implémenter l'IaC sur Google Cloud

Google Cloud fournit un ensemble complet d'outils pour vous accompagner dans votre parcours d'Infrastructure as Code, de la conception initiale au déploiement et à la gestion continue. L'App Design Center est un excellent point de départ. Il vous permet d'explorer, de personnaliser et de développer des architectures de référence prédéfinies. Cela vous aide à concevoir votre pile d'applications en suivant les bonnes pratiques de Google Cloud avant même d'écrire une seule ligne de code, ce qui vous permet de vous assurer que votre infrastructure est bien architecturée dès le départ.

Une fois que vous avez un plan, l'écosystème ouvert de Google Cloud vous permet de l'implémenter facilement sous forme de code. La plate-forme traite les normes Open Source telles que Terraform comme des éléments de premier ordre, et non comme des éléments de second plan. Des services comme Infrastructure Manager vous permettent de déployer et de gérer directement des ressources Google Cloud à l'aide de Terraform, tandis que Config Connector vous permet de gérer des ressources Google Cloud via Kubernetes, ce qui contribue à combler le fossé entre l'infrastructure cloud et l'orchestration de conteneurs.

Cloud Resource Manager

Cloud Resource Manager est le service qui permet de gérer de façon programmatique la hiérarchie des ressources Google Cloud, y compris les organisations, les dossiers et les projets. Si de nombreuses équipes utilisent l'IaC pour déployer des ressources telles que des machines virtuelles, Cloud Resource Manager vous permet de définir la structure du projet elle-même en tant que code. Cela aide les équipes à automatiser la configuration de nouveaux environnements avec des règles Identity and Access Management (IAM) et des contraintes organisationnelles cohérentes, ce qui garantit que la gouvernance est intégrée à l'infrastructure dès le départ.

Automatiser les environnements d'aperçu temporaires

L'un des avantages les plus intéressants de l'IaC est qu'elle permet de résoudre un problème courant chez les développeurs : "Ça fonctionnait sur ma machine, alors pourquoi ça ne fonctionne pas en production ?" Vous pouvez résoudre ce problème en créant des environnements temporaires.

Dans ce workflow, lorsqu'un développeur ouvre une demande d'extraction, les outils IaC créent automatiquement une copie temporaire et isolée de l'application. Lorsque la demande d'extraction est fusionnée, l'environnement s'autodétruit.

Étape 1 : Nommage dynamique dans Terraform

Pour que cela fonctionne, votre code Terraform ne doit pas contenir de noms codés en dur. Vous devez utiliser des variables pour créer des ressources uniques pour chaque demande d'extraction.

main.tf (extrait)

  • Terraform
Chargement en cours...

Étape 2 : Configuration Cloud Build

Dans votre fichier cloudbuild.yaml, vous injectez le numéro de la demande d'extraction dans Terraform à l'aide de la variable de substitution _PR_NUMBER fournie par Cloud Build.

cloudbuild.yaml (extrait)

  • YAML
Chargement en cours...

Ce flux de travail transforme l'IaC, qui n'est plus une tâche de maintenance statique, en un outil de productivité dynamique qui accélère le cycle d'examen.

Relevez vos plus grands défis avec Google Cloud

Les nouveaux clients bénéficient de 300 $ de crédits à dépenser sur Google Cloud.

Autres ressources

Passez à l'étape suivante

Commencez à créer des applications sur Google Cloud avec 300 $ de crédits inclus et plus de 20 produits toujours sans frais.

Google Cloud