Práticas recomendadas ao trabalhar com os recursos do Google Cloud

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.

A seguir