Bonnes pratiques concernant les ressources Google Cloud
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les bonnes pratiques pour le provisionnement de ressources Google Cloud avec Terraform sont intégrées aux modules Cloud Foundation gérés par Google. Cette section répète certaines de ces bonnes pratiques.
Ce guide n'est pas une introduction à Terraform. Pour une présentation de l'utilisation de Terraform avec Google Cloud, consultez la page Premiers pas avec Terraform.
Préconcevoir des images de machine virtuelle
En général, nous vous recommandons de créer des images de machine virtuelle en utilisant un outil comme Packer.
Il suffit ensuite de lancer des machines à l'aide des images préconçues.
Si les images préconçues ne sont pas disponibles, Terraform peut transférer de nouvelles machines virtuelles vers un outil de gestion de la configuration en utilisant un bloc provisioner. Nous vous recommandons d'éviter cette méthode et de ne l'utiliser qu'en dernier recours.
Pour nettoyer l'ancien état associé à l'instance, les approvisionneurs nécessitant une logique de suppression doivent utiliser un bloc provisioner avec when = destroy.
Terraform doit fournir les informations de configuration des VM pour la gestion de la configuration avec des métadonnées d'instance.
Gérer la gestion de l'authentification et des accès (IAM)
Lorsque vous provisionnez des associations IAM avec Terraform, plusieurs ressources différentes sont disponibles :
google_*_iam_policy (par exemple, google_project_iam_policy)
google_*_iam_binding (par exemple, google_project_iam_binding)
google_*_iam_member (par exemple, google_project_iam_member)
google_*_iam_policy et google_*_iam_binding créent des associations IAM faisant autorité, où les ressources Terraform servent de seule source fiable pour les autorisations pouvant être attribuées à la ressource concernée.
Si les autorisations changent en dehors de Terraform, à la prochaine exécution, Terraform écrase toutes les autorisations afin de représenter la stratégie telle que définie dans votre configuration. Cela peut être judicieux pour les ressources entièrement gérées par une configuration Terraform spécifique. Cependant, cela signifie que les rôles automatiquement gérés par Google Cloud sont supprimés, ce qui risque de perturber le bon fonctionnnement de certains services.
Pour éviter cela, nous vous recommandons d'utiliser directement les ressources google_*_iam_member ou le module IAM de Google.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/24 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2024/12/24 (UTC)."],[[["\u003cp\u003eThis guide reiterates best practices for provisioning Google Cloud resources with Terraform, as integrated into the Cloud Foundation Toolkit modules.\u003c/p\u003e\n"],["\u003cp\u003eIt's recommended to use pre-baked virtual machine images with tools like Packer, and only utilize Terraform provisioners as a last resort.\u003c/p\u003e\n"],["\u003cp\u003eTerraform should provide VM configuration information to configuration management through instance metadata.\u003c/p\u003e\n"],["\u003cp\u003eWhen managing IAM, using \u003ccode\u003egoogle_*_iam_member\u003c/code\u003e resources or the Google IAM module is preferable to prevent overwriting automatically managed roles.\u003c/p\u003e\n"],["\u003cp\u003eAuthoritative IAM resources like \u003ccode\u003egoogle_*_iam_policy\u003c/code\u003e and \u003ccode\u003egoogle_*_iam_binding\u003c/code\u003e are not ideal for resources that have roles that are automatically managed by Google Cloud.\u003c/p\u003e\n"]]],[],null,["# Best practices when working with Google Cloud resources\n\nBest practices for provisioning Google Cloud resources with Terraform, are\nintegrated into the [Cloud Foundation Toolkit](/foundation-toolkit) modules that\nGoogle maintains. This document reiterates some of these best practices.\n\nThis guide is not an introduction to Terraform. For an introduction to using\nTerraform with Google Cloud, see\n[Get started with Terraform](/docs/terraform/get-started-with-terraform).\n\nBake virtual machine images\n---------------------------\n\nIn general, we recommend that you *bake* virtual machine images\n[using a tool like Packer](/compute/docs/images/image-management-best-practices#automated_baking).\nTerraform then only needs to launch machines using the pre-baked images.\n\nIf pre-baked images are not available, Terraform can hand off new virtual\nmachines to a configuration management tool with a `provisioner` block. We\nrecommend that you avoid this method and only use it as a\n[last resort](https://www.terraform.io/language/resources/provisioners/syntax#provisioners-are-a-last-resort).\nTo clean up old state associated with the instance, provisioners that require\nteardown logic should use a `provisioner` block with `when = destroy`.\n\nTerraform should provide VM configuration information to configuration\nmanagement with\n[instance metadata](/compute/docs/metadata/overview).\n\nManage Identity and Access Management\n-------------------------------------\n\nWhen provisioning IAM associations with Terraform, several\ndifferent resources are available:\n\n- `google_*_iam_policy` (for example, `google_project_iam_policy`)\n- `google_*_iam_binding` (for example, `google_project_iam_binding`)\n- `google_*_iam_member` (for example, `google_project_iam_member`)\n\n`google_*_iam_policy` and `google_*_iam_binding` create *authoritative*\nIAM associations, where the Terraform resources serve as the only\nsource of truth for what permissions can be assigned to the relevant resource.\n\nIf the permissions change outside of Terraform, Terraform on its next\nexecution overwrites all permissions to represent the policy as defined in your\nconfiguration. This might make sense for resources that are wholly managed by a\nparticular Terraform configuration, but it means that roles that are\nautomatically managed by Google Cloud are removed---potentially disrupting\nthe functionality of some services.\n\nTo prevent this, we recommend using either `google_*_iam_member` resources\ndirectly or the\n[IAM module from Google](https://github.com/terraform-google-modules/terraform-google-iam).\n\nWhat's next\n-----------\n\n- Learn about [best practices for version control](/docs/terraform/best-practices/version-control).\n- Learn about [best practices for Terraform operations](/docs/terraform/best-practices/operations)."]]