HashiCorp Terraform est un outil IaC (Infrastructure as Code) qui vous permet de provisionner et de gérer l'infrastructure cloud. Terraform fournit des plug-ins appelés fournisseurs qui vous permettent d'interagir avec des fournisseurs cloud et d'autres API. Vous pouvez utiliser le fournisseur Terraform pour Google Cloud pour provisionner et gérer les ressources Google Cloud, y compris Cloud Build.
Fonctionnement de Terraform
Terraform possède une syntaxe déclarative et axée sur la configuration qui vous permet de décrire l'infrastructure que vous souhaitez provisionner dans votre projet Google Cloud. Après avoir créé cette configuration dans un ou plusieurs de configuration Terraform, vous pouvez utiliser la CLI Terraform pour appliquer à vos ressources Cloud Build.
Les étapes suivantes expliquent le fonctionnement de Terraform :
- Vous devez décrire l'infrastructure que vous souhaitez provisionner dans un fichier de configuration Terraform. Vous n'avez pas besoin d'écrire de code décrivant comment provisionner l'infrastructure. Terraform provisionne l'infrastructure pour vous.
- Vous exécutez la commande
terraform plan
, qui évalue votre configuration et génère un plan d'exécution. Vous pouvez examiner le plan et apporter les modifications nécessaires. -
Vous exécutez la commande
terraform apply
, qui effectue les actions suivantes :- Il provisionne votre infrastructure en fonction de votre plan d'exécution en appelant les API Cloud Build correspondantes en arrière-plan.
- Il crée un fichier d'état Terraform, qui est un fichier JSON qui mappe les ressources de votre fichier de configuration avec les ressources de l'infrastructure réelle. Terraform utilise ce fichier pour conserver un enregistrement de l'état le plus récent de votre infrastructure et pour déterminer quand créer, mettre à jour et détruire des ressources.
-
Lorsque vous exécutez
terraform apply
, Terraform utilise le mappage dans le fichier d'état pour comparer l'infrastructure existante au code et effectuer les mises à jour si nécessaire :- Si un objet de ressource est défini dans le fichier de configuration, mais n'existe pas dans le fichier d'état, Terraform le crée.
- Si un objet de ressource existe dans le fichier d'état, mais possède une configuration différente de celle contenue dans votre fichier de configuration, Terraform met à jour la ressource en fonction de votre fichier de configuration.
- Si un objet de ressource dans le fichier d'état correspond à votre fichier de configuration, Terraform laisse la ressource telle quelle.
Guides Cloud Build basés sur Terraform
Le tableau suivant répertorie tous les guides d'utilisation et tutoriels basés sur Terraform pour Cloud Build:
Guide | Détails |
---|---|
Se connecter à un dépôt GitHub | Ce guide explique comment connecter un dépôt GitHub Cloud Build avec Terraform. |
Se connecter à un hôte GitHub Enterprise | Ce guide explique comment connecter un hôte GitHub Enterprise à Cloud Build avec Terraform. |
Se connecter à un dépôt GitHub Enterprise | Ce guide explique comment connecter un dépôt GitHub Enterprise à Cloud Build à l'aide de Terraform. |
Se connecter à un hôte GitLab Enterprise Edition | Ce guide explique comment connecter un hôte GitLab Enterprise Edition à Cloud Build à l'aide de Terraform. |
Se connecter à un dépôt GitLab Enterprise Edition | Ce guide explique comment connecter un dépôt GitLab Enterprise Edition à Cloud Build avec Terraform. |
Se connecter à un hôte Bitbucket Data Center | Ce guide explique comment connecter un hôte Bitbucket Data Center à Cloud Build à l'aide de Terraform. |
Se connecter à un dépôt Bitbucket Data Center | Ce guide explique comment connecter un dépôt Bitbucket Data Center à Cloud Build à l'aide de Terraform. |
Se connecter à un hôte Bitbucket Cloud | Ce guide explique comment connecter un hôte Bitbucket Cloud à Cloud Build à l'aide de Terraform. |
Se connecter à un dépôt Bitbucket Cloud | Ce guide explique comment connecter un dépôt Bitbucket Cloud à Cloud Build à l'aide de Terraform. |
Déployer sur Compute Engine | Ce guide explique comment effectuer des déploiements bleu-vert sans temps d'arrêt sur des groupes d'instances gérés (MIG, Managed Instance Group) Compute Engine à l'aide de Cloud Build et de Terraform. |
Modules Terraform et plans pour Cloud Build
Les modules et les plans vous aident à automatiser le provisionnement et la gestion des ressources Google Cloud à grande échelle. Un module est un ensemble de fichiers de configuration Terraform réutilisables qui crée une abstraction logique des ressources Terraform. Un plan comprend un package de modules déployables et réutilisables ainsi qu'une règle qui implémente et documente une solution spécifique.
Le tableau suivant recense tous les modules et tous les modèles liés à Cloud Build :
Module ou plan | Détails |
---|---|
Pipeline CI/CD sécurisé | Ce module permet aux clients Google Cloud de déployer rapidement un pipeline CI/CD, mettant en œuvre de nombreuses fonctions décrites dans l'article Repousser les limites de la sécurité : |
terraform-google-bootstrap |
Ce module vous aide à amorcer une organisation Google Cloud, en créant toutes les ressources et autorisations requises pour commencer à utiliser kit Cloud Foundation. Pour les utilisateurs qui souhaitent utiliser Cloud Build et Cloud Source Repositories pour le code de base, ce module contient un sous-module qui démarre toutes les ressources requises. |
Ressources Terraform pour Cloud Build
Les ressources sont les éléments fondamentaux du langage Terraform. Chaque bloc de ressources décrit un ou plusieurs objets d'infrastructure, tels que des réseaux virtuels ou des instances de calcul.
Le tableau suivant répertorie les ressources Terraform disponibles pour Cloud Build:
Service Cloud Build | Ressources Terraform | Source de données |
---|---|---|
Cloud Build v1 | google_cloudbuild_trigger
|
|
Cloud Build v2 | google_cloudbuildv2_connection_iam_policy |
Étape suivante
- Exemples de code Terraform pour Cloud Build
- Documentation Terraform sur Google Cloud
- Documentation du fournisseur Google Cloud dans HashiCorp
- IAC (Infrastructure as Code) pour Google Cloud