L'Infrastructure as Code (IaC) est le processus de provisionnement et de gestion de l'infrastructure de l'application logicielle à l'aide de code plutôt que d'interfaces utilisateur graphiques ou de scripts de ligne de commande.
Le provisionnement de l'infrastructure d'application implique généralement la configuration et la gestion des machines virtuelles, des connexions à la base de données, du stockage et d'autres éléments d'infrastructure. La gestion manuelle de cette infrastructure est chronophage et sujette aux erreurs, en particulier lors de la gestion d'applications à grande échelle.
L'IaC vous permet de définir votre infrastructure à l'aide de fichiers de configuration, qui vous permettent de créer, modifier et gérer votre infrastructure de manière sûre et reproductible. Vous pouvez définir des configurations de ressources que vous pouvez versionner, réutiliser et partager. L'IaC vous permet de spécifier l'état souhaité de votre infrastructure. Vous pouvez ensuite déployer la même configuration plusieurs fois pour créer des environnements de développement, de test et de production reproductibles.
L'IaC vous permet de traiter le provisionnement et la configuration de votre infrastructure de la même manière que le code d'application. Vous pouvez stocker votre logique de configuration de provisionnement dans un dépôt source et tirer parti des pipelines d'intégration continue et de déploiement continu (CI/CD).
Avantages de l'IaC
L'utilisation de l'IaC pour configurer et gérer l'infrastructure de vos applications constitue une bonne pratique pour un certain nombre de cas d'utilisation courants. Google gère ses systèmes avec l'IaC et la définit comme une pratique standard en interne.
L'IaC offre les avantages suivants :
- Vous pouvez définir votre infrastructure en fonction de vos besoins et réutiliser la même configuration pour créer plusieurs environnements de manière cohérente.
- Vous pouvez automatiser la création et la gestion de vos ressources cloud, y compris pour les environnements de déploiement et de test.
- Vous pouvez traiter les modifications d'infrastructure de la même manière que les modifications d'application. Par exemple, vous pouvez vous assurer que les modifications apportées à la configuration sont examinées et validées automatiquement. Il est recommandé de gérer les environnements de production à l'aide de processus de contrôle du changement à l'aide de l'IaC.
- Vous pouvez conserver un historique de toutes les modifications de configuration. Les modifications peuvent être auditées et annulées.
- Vous pouvez disposer d'une source fiable unique pour votre infrastructure cloud.
Outils IaC pour Google Cloud
Google Cloud est étroitement intégré à de nombreux outils IaC. Choisissez l'un des outils suivants en fonction de votre cas d'utilisation :
Terraform
En général, pour configurer et gérer l'infrastructure Google Cloud à l'aide de code, utilisez le fournisseur Terraform pour Google Cloud.
HashiCorp Terraform est un outil IaC qui vous permet de définir des ressources dans le cloud et sur site dans des fichiers de configuration lisibles par l'homme, que vous pouvez versionner, réutiliser et partager. Vous pouvez ensuite utiliser un workflow cohérent pour provisionner et gérer l'ensemble de votre infrastructure tout au long de son cycle de vie. Pour en savoir plus, consultez la page de présentation de Terraform sur Google Cloud.
Infrastructure Manager
Si vous souhaitez automatiser le déploiement de votre configuration Terraform, utilisez Infrastructure Manager (Infra Manager).
Infra Manager automatise le déploiement et la gestion des ressources d'infrastructure Google Cloud à l'aide de Terraform. Infra Manager vous permet d'effectuer un déploiement automatisé sur Google Cloud, ce qui vous permet d'utiliser ce service plutôt que de gérer une chaîne d'outils différente pour travailler avec Terraform sur Google Cloud. Pour en savoir plus, consultez la page Présentation d'Infra Manager.
Terraform Cloud et Terraform Enterprise
Si vous avez besoin d'une gestion complète du changement avec Terraform dans votre organisation, utilisez Terraform Cloud ou Terraform Enterprise.
Terraform Cloud est une application SaaS (Software as a Service) qui exécute Terraform dans un environnement stable et distant, et stocke de manière sécurisée l'état et les secrets. Terraform Cloud s'intègre également à la CLI Terraform et se connecte aux systèmes de contrôle de version (VCS) courants tels que GitHub, GitLab et Bitbucket. Lorsque vous connectez un espace de travail Terraform Cloud à un dépôt VCS, les nouveaux commits et modifications peuvent déclencher automatiquement des plans Terraform. Terraform Cloud propose également une API qui vous permet de l'intégrer à des workflows existants.
Terraform Enterprise vous permet de configurer une distribution auto-hébergée de Terraform Cloud. Il offre des limites de ressources personnalisables et est idéal pour les organisations présentant des exigences strictes en termes de sécurité et de conformité.
Pour en savoir plus, consultez la page des éditions Terraform dans la documentation HashiCorp.
Kit de développement cloud pour Terraform
Si vous souhaitez générer une infrastructure avec un langage de programmation à usage général au lieu d'utiliser le langage de configuration Hashicorp (HCL), utilisez le kit de développement cloud pour Terraform (CDKTF).
CDKTF vous permet de configurer Terraform à l'aide d'un langage de programmation pour définir et provisionner l'infrastructure Google Cloud, et d'utiliser votre chaîne d'outils existante pour des processus tels que les tests et la gestion des dépendances.
Pulumi
Pulumi est un autre outil que vous pouvez utiliser pour provisionner une infrastructure à l'aide de langages de programmation. Vous pouvez faire appel au fournisseur Google Cloud pour Pulumi pour créer du code d'infrastructure à l'aide de langages de programmation tels que TypeScript, Python, Go, C#, Java ou YAML.
Config Controller et Config Connector
Pour gérer les ressources Google Cloud via Kubernetes, utilisez Config Controller et Config Connector.
Config Controller et Config Connector vous permettent de configurer les services et les ressources Google Cloud à l'aide des outils Kubernetes. Vous pouvez utiliser des outils GitOps tels que Config Sync et les API Kubernetes, et vous pouvez configurer et utiliser des primitives d'ingénierie de plate-forme, telles que des webhooks et des opérateurs d'admission.
Pour en savoir plus, consultez les pages Présentation de Config Controller et Présentation de Config Connector.
Crossplane
Une autre option pour gérer les ressources Google Cloud via Kubernetes consiste à utiliser Crossplane.
Crossplane connecte votre cluster Kubernetes à des ressources externes non Kubernetes et permet aux équipes en charge de la plate-forme de créer des API Kubernetes personnalisées pour utiliser ces ressources. Crossplane agit comme un contrôleur Kubernetes pour surveiller l'état des ressources externes et permettre l'application de l'état. Lorsque Crossplane est installé dans un cluster Kubernetes, les utilisateurs ne communiquent qu'avec Kubernetes. Crossplane gère la communication avec des ressources externes telles que Google Cloud. Si quelque chose modifie ou supprime une ressource en dehors de Kubernetes, Crossplane annule la modification ou recrée la ressource supprimée.
Pour en savoir plus, consultez la documentation Crossplane.
Ansible
Si vous souhaitez automatiser le provisionnement, la gestion de la configuration, le déploiement d'applications, l'orchestration et d'autres processus informatiques, utilisez Ansible. Pour en savoir plus, consultez la page Ansible pour Google Cloud.
Étapes suivantes
- En savoir plus sur Terraform
- Apprenez à créer un serveur Web de base sur Compute Engine à l'aide de Terraform.
- Découvrez comment stocker l'état Terraform dans un bucket Cloud Storage.