Neste tutorial, você aprenderá a armazenar o estado do Terraform em um bucket do Cloud Storage.
Por padrão, o Terraform armazena o estado localmente em um arquivo chamado terraform.tfstate
. Essa configuração padrão pode
dificultar o uso do Terraform para as equipes, especialmente quando muitos usuários o executam
ao mesmo tempo e cada máquina tem o próprio entendimento da
infraestrutura atual.
Para ajudar a evitar esses problemas, esta página mostra como configurar um estado remoto que aponta para um bucket do Cloud Storage. O estado remoto é um recurso de back-ends do Terraform.
Custos
No Cloud Storage, há custos de armazenamento, operações de leitura e gravação, saída de rede e replicação.
O bucket do Cloud Storage neste tutorial tem o controle de versões de objetos ativado para manter o histórico das implantações. Ativar o controle de versões do objeto aumenta os custos de armazenamento, que podem ser reduzidos com a configuração do Gerenciamento do ciclo de vida de objetos para excluir versões mais antigas.
Antes de começar
-
Verifique se você tem as
permissões do Cloud Storage necessárias na
conta de usuário:
storage.buckets.create
storage.buckets.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
Saiba mais sobre papéis e permissões.
Como prática recomendada, recomendamos controlar o acesso ao bucket e aos arquivos de estado armazenados nele. Apenas um pequeno grupo de usuários (por exemplo, o administrador principal da nuvem e a pessoa que atua como administrador alternativo ou de backup) deve ter permissões de administrador para o bucket. Os outros desenvolvedores precisam ter permissões para gravar e ler apenas objetos no bucket.
- Iniciar o Cloud Shell.
O Cloud Shell é uma máquina virtual do Compute Engine. As credenciais de serviço associadas a essa máquina virtual são automáticas. Por isso, não é necessário configurar ou fazer o download de uma chave de conta de serviço.
- Ative a API Cloud Storage:
gcloud services enable storage.googleapis.com
Configurar o Terraform para armazenar o estado em um bucket do Cloud Storage
Nas etapas a seguir, você vai criar um bucket do Cloud Storage e altera a configuração do back-end para o novo bucket e o projeto do Google Cloud.
Crie o bucket
Adicione o seguinte recurso do Terraform
google_storage_bucket
a um arquivo de configuração do Terraform, comomain.tf
.No snippet de código, o campo
location
está codificado paraUS
(o que significa que um bucket multirregional nos EUA foi criado). É possível alterar esse campo para um local de sua escolha.Execute
terraform apply
para criar o bucket de armazenamento.
Altere a configuração do back-end
Adicione o texto a seguir a um novo arquivo de configuração do Terraform chamado
backend.tf
.terraform { backend "gcs" { bucket = "BUCKET_NAME" prefix = "terraform/state" } }
Atualize BUCKET_NAME para corresponder ao nome do novo bucket do Cloud Storage.
Execute
terraform init
para configurar o back-end do Terraform.O Terraform detecta que você já tem um arquivo de estado localmente e solicita que você o copie para o novo bucket do Cloud Storage. Insira
yes
.
Depois da execução desse comando, o estado do Terraform é armazenado no bucket do Cloud Storage. O Terraform extrai o estado mais recente desse bucket antes de executar um comando e o envia para o bucket depois da execução.
Próximas etapas
- Saiba mais sobre como gerenciar a infraestrutura como código com o Terraform, o Cloud Build e o GitOps.
- Saiba mais sobre a validação de políticas.