Práticas recomendadas ao trabalhar com os recursos do Google Cloud
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
As práticas recomendadas para provisionar recursos do Google Cloud com o Terraform são
integradas aos módulos do Cloud Foundation Toolkit que
o Google mantém. Este documento reforça algumas dessas práticas recomendadas.
Este guia não é uma introdução ao Terraform. Para uma introdução ao uso do Terraform com o Google Cloud, consulte Primeiros passos com o Terraform.
Imagens da máquina virtual
Em geral, recomendamos que você defina imagens de máquinas virtuais
usando uma ferramenta como o Packer.
O Terraform só precisará iniciar máquinas usando as imagens predefinidas.
Se imagens predefinidas não estiverem disponíveis, o Terraform poderá transferir novas máquinas
virtuais para uma ferramenta de gerenciamento de configuração com um bloco provisioner. Recomendamos
evitar esse método e usá-lo apenas como
último recurso.
Para limpar o estado antigo associado à instância, os provisionadores que exigem
lógica de desmontagem precisam usar um bloco provisioner com when = destroy.
O Terraform deve fornecer informações de configuração da VM para o gerenciamento de configuração com metadados de instância.
Gerenciar o Identity and Access Management
Ao provisionar associações do IAM com o Terraform, vários
recursos diferentes estão disponíveis:
google_*_iam_policy (por exemplo, google_project_iam_policy)
google_*_iam_binding (por exemplo, google_project_iam_binding)
google_*_iam_member (por exemplo, google_project_iam_member)
google_*_iam_policy e google_*_iam_binding criam associações autoritativas
de IAM, em que os recursos do Terraform servem como a única
fonte da verdade para quais permissões podem ser atribuídas ao recurso relevante.
Se as permissões mudarem fora do Terraform, ele substitui todas as permissões para representar a política, conforme definido na sua
configuração. Isso pode ser útil para recursos totalmente gerenciados por uma
configuração específica do Terraform. No entanto, isso significa que os papéis
gerenciados automaticamente pelo Google Cloud são removidos. Isso pode interromper
a funcionalidade de alguns serviços.
Para evitar isso, recomendamos o uso de recursos google_*_iam_member
diretamente ou do
módulo do IAM no Google.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2024-12-22 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)."]]