Cette page répond aux questions fréquentes concernant l'utilisation de Terraform pour gérer les ressources sur Google Cloud, en particulier en ce qui concerne les interactions avec les API et la prise en main.
Premiers pas avec Terraform
Cette section aborde les concepts de base et les premières étapes pour les nouveaux utilisateurs de Terraform.
Qu'est-ce que l'Infrastructure as Code (IaC) et pourquoi utiliser Terraform ?
L'Infrastructure as Code (IaC) est une pratique qui consiste à gérer et à provisionner l'infrastructure informatique à l'aide de fichiers de définition lisibles par machine. Pour obtenir une présentation complète des concepts et des avantages de l'IaC, consultez Qu'est-ce que l'Infrastructure as Code ?.
Terraform est un outil IaC Open Source utilisé pour définir, provisionner et gérer les ressources cloud et sur site. Pour en savoir plus sur les avantages de l'utilisation de Terraform pour votre workflow IaC, consultez Avantages de l'utilisation de Terraform.
Comment installer Terraform et exécuter ma première configuration ?
Pour commencer à utiliser Terraform, vous devez d'abord télécharger et installer la CLI Terraform sur votre ordinateur local. Des instructions sont disponibles sur le site Web HashiCorp Terraform. Après l'installation, vous pouvez créer un fichier de configuration Terraform, définir une ressource (comme un bucket Cloud Storage), puis utiliser terraform init
pour initialiser votre répertoire de travail, terraform plan
pour prévisualiser vos modifications et terraform apply
pour les appliquer.
Qu'est-ce que le langage de configuration HashiCorp (HCL) et où puis-je en apprendre davantage sur sa syntaxe ?
Le langage de configuration HashiCorp (HCL) est le langage de configuration utilisé par Terraform. Il est conçu pour être lisible par les humains et les machines, afin de permettre une écriture et une compréhension claires et efficaces des définitions d'infrastructure. HCL est compatible avec diverses fonctionnalités telles que les variables, les expressions, les fonctions et les modules. Vous pouvez apprendre la syntaxe HCL grâce à la documentation officielle HashiCorp Terraform, qui fournit des guides et des exemples complets.
Où puis-je trouver des exemples de configurations Terraform pour les ressources Google Cloud ?
Vous trouverez de nombreux exemples de configurations Terraform pour Google Cloud :
Registre Terraform HashiCorp : le registre Terraform officiel pour le fournisseur Google Cloud contient de la documentation et des exemples pour chaque ressource et source de données.
Google Cloud Exemples Terraform : Google fournit divers exemples Terraform qui montrent comment déployer et gérer les ressources Google Cloud courantes.
Dépôts GitHub : de nombreux dépôts Open Source, y compris l'organisation GitHub
terraform-google-modules
, proposent des exemples et des modules réutilisables.
Comment gérer et tester des configurations Terraform complexes, en particulier lorsque vous traitez de nombreuses ressources ?
Pour les configurations complexes, envisagez d'utiliser les fonctionnalités de Terraform conçues pour l'évolutivité et la facilité de maintenance :
Modules : encapsulent et réutilisent les modèles d'infrastructure courants.
Espaces de travail : gérez plusieurs instances distinctes d'une même configuration.
terraform plan
etterraform validate
: utilisez fréquemment ces commandes pour valider la syntaxe et prévisualiser les modifications sans les déployer réellement.Ressources de ciblage (à utiliser avec précaution) : pour tester des parties spécifiques, vous pouvez utiliser temporairement
-target
avecterraform apply
outerraform destroy
. Toutefois, cette méthode est généralement déconseillée pour les opérations de routine en raison de la complexité de la gestion des états.Environnements dédiés : déployez dans des environnements de développement ou de préproduction pour effectuer des tests avant la production.
Google Cloud Questions sur les API
Ces questions portent sur les requêtes courantes concernant l'interaction de Terraform avec les APIGoogle Cloud , y compris les API publiques et privées.
Puis-je utiliser Terraform pour gérer ou importer des API Google Cloud internes ou privées comme dataproc-control.googleapis.com
?
Non. Les API internes ou privées Google Cloud font partie de l'Service Infrastructure gérés de Google. Elles ne sont pas exposées pour la gestion, l'activation ou l'importation directes par les clients à l'aide de Terraform. Ces API sont gérées automatiquement par Google Cloud. Toute tentative de gestion directe avec Terraform générera des erreurs.
Pour obtenir une explication complète, consultez le guide Comprendre les API Google Cloud et Terraform.
Quelle est la différence entre activer une API et importer une ressource dans Terraform ?
Activer une API : cela signifie activer un service Google Cloud spécifique pour votre projet et accorder à ce projet les autorisations nécessaires pour utiliser ce service. Lorsque vous utilisez Terraform sur Google Cloud, cela se fait généralement à l'aide de la ressource
google_project_service
. Il s'agit d'une condition préalable à la création de ressources qui s'appuient sur cette API.Importer une ressource : il s'agit d'importer une ressource Google Cloud existante (par exemple, une instance Compute Engine ou un bucket Cloud Storage) qui a été créée en dehors de Terraform et de la placer sous la gestion de Terraform. Vous importez des ressources, et non des API.
Pour en savoir plus, consultez le Guide de compréhension des API Google Cloud et de Terraform.
Que se passe-t-il si je ne gère pas ou n'importe pas explicitement dataproc-control.googleapis.com ? Cela aura-t-il un impact sur ma capacité à utiliser Dataproc ?
Non, cela n'aura aucune incidence sur votre capacité à utiliser Dataproc. dataproc-control.googleapis.com
est une API interne utilisée par Dataproc pour son propre contrôle opérationnel. Sa fonctionnalité est gérée automatiquement parGoogle Cloud. Vous n'avez pas besoin de l'activer, de l'importer ni de la gérer explicitement à l'aide de Terraform. Vos clusters et jobs Dataproc fonctionneront correctement sans aucune intervention manuelle concernant cette API interne.
Comment résoudre les erreurs 403 "Autorisation refusée" dans Terraform ?
Les erreurs 403 Permission Denied
indiquent généralement que le compte de service ou les identifiants utilisateur utilisés par Terraform ne disposent pas des autorisations IAM nécessaires pour effectuer une action demandée sur une ressource Google Cloud spécifique. Pour résoudre le problème :
Identifiez la ressource et la méthode d'API concernées : le message d'erreur indique généralement le type de ressource et l'appel d'API qui a échoué.
Vérifiez les rôles IAM : assurez-vous que l'entité principale (compte de service ou utilisateur) dispose des rôles IAM appropriés au niveau requis (projet, dossier, organisation ou ressource). Utilisez l'outil de dépannage IAM dans la console Google Cloud .
Vérifiez que le service est activé : assurez-vous que le service d'API Google Cloud requis est activé pour votre projet (par exemple, à l'aide de
gcloud services enable
ougoogle_project_service
).Examinez les règles d'administration d'administration : vérifiez si des règles d'administration limitent l'action.
Pourquoi des erreurs liées au quota s'affichent-elles (429 Too Many Requests ou 403 Quota Exceeded) ?
Des erreurs de quota se produisent lorsque votre projet tente de consommer plus de ressources ou d'effectuer plus de requêtes API que ne le permettent ses quotas actuels. Pour remédier à ce problème, procédez comme suit :
Identifiez le quota spécifique : le message d'erreur indique généralement l'API et la limite de quota dépassée.
Vérifier les quotas actuels : accédez à la page Quotas de la console Google Cloud pour afficher l'utilisation et les limites actuelles.
Demander une augmentation de quota : si vous avez besoin de plus de capacité, vous pouvez demander une augmentation de quota directement sur la page "Quotas".
Considérations concernant
user_project_override
: pour certaines ressources, si votre projet d'identifiants diffère du projet de ressources, les requêtes API peuvent être facturées sur le quota du projet d'identifiants. L'utilisation deuser_project_override
(voir Référence du fournisseur) peut parfois résoudre ce problème en forçant la facturation du quota au projet de la ressource.
Qu'est-ce qu'un compte de service par défaut géré par l'utilisateur et comment gérer ses autorisations avec Terraform ?
Certains services Google Cloud créent automatiquement des comptes de service gérés par l'utilisateur (souvent appelés comptes de service par défaut) lorsqu'un projet est créé ou qu'un service est activé. Ils disposent généralement d'autorisations étendues. Bien qu'ils soient gérés par l'utilisateur, ils sont créés par Google. Vous pouvez gérer leurs autorisations à l'aide de ressources IAM telles que google_project_iam_member
pour modifier leurs rôles. Si vous souhaitez effectuer des actions sur les comptes de service par défaut eux-mêmes, comme supprimer leurs rôles par défaut à privilèges élevés ou supprimer complètement les comptes, vous pouvez utiliser la ressource google_project_default_service_accounts
.
Google fournit également des conseils sur les types de comptes de service par défaut.
Qu'est-ce qu'un compte de service géré par Google et comment le référencer dans les configurations Terraform ?
Les comptes de service gérés par Google sont créés et entièrement gérés par Google pour certains services. Ils existent en dehors des projets utilisateur et ne sont pas directement configurables par les utilisateurs de la même manière que les comptes de service gérés par l'utilisateur. Toutefois, vous devrez peut-être leur accorder des autorisations IAM pour qu'ils puissent interagir avec vos ressources. Vous pouvez référencer l'adresse e-mail d'un compte de service géré par Google pour un service spécifique à l'aide de la source de données ou de la ressource google_project_service_identity
dans Terraform, puis lui appliquer des stratégies IAM. Par exemple, cela est courant pour les services tels que Cloud Build ou Cloud Composer.
Que se passe-t-il lorsque j'terraform destroy
une ressource pour laquelle disable_on_destroy
est configuré ?
L'argument disable_on_destroy
sur google_project_service
et certaines autres ressources (par exemple, google_storage_bucket
) contrôle si la ressource cloud sous-jacente est désactivée ou supprimée lorsque la ressource Terraform est détruite.
Si
disable_on_destroy
est défini surtrue
(ou n'est pas défini, car il s'agit souvent de la valeur par défaut),terraform destroy
tentera de désactiver (pour les API) ou de supprimer (pour les buckets) la ressource cloud correspondante.Si
disable_on_destroy
est défini surfalse
,terraform destroy
supprimera la ressource de l'état Terraform, mais laissera la ressource cloud réelle (par exemple, l'API activée ou le bucket) intacte dans votre projet Google Cloud . Cette option est souvent préférée pour les services critiques qui ne doivent pas être désactivés ou supprimés par erreur.