Provisionar recursos do Compute Engine com o Terraform

Hashicorp Terraform é uma ferramenta de infraestrutura como código (IaC, na sigla em inglês) que permite provisionar e gerenciar infraestrutura em nuvem. O Terraform fornece plug-ins chamados provedores, que permitem interagir com provedores de nuvem e outras APIs. É possível usar o provedor Terraform para Google Cloud para provisionar e gerenciar recursos do Google Cloud, incluindo o Compute Engine.

Como o Terraform funciona

O Terraform tem uma sintaxe declarativa e orientada pela configuração, que pode ser usada para descrever a infraestrutura que você quer provisionar no projeto do Google Cloud. Depois de criar essa configuração em um ou mais arquivos de configuração do Terraform, use a CLI do Terraform para aplicá-la aos recursos do Compute Engine.

As etapas a seguir explicam como o Terraform funciona:

  1. Você descreve a infraestrutura que quer provisionar em um arquivo de configuração do Terraform. Não é preciso escrever código descrevendo como provisionar a infraestrutura. O Terraform provisiona a infraestrutura para você.
  2. Você executa o comando terraform plan, que avalia sua configuração e gera um plano de execução. É possível analisar o plano e fazer alterações conforme necessário.
  3. Você executará o comando terraform apply, que realiza as seguintes ações:

    1. Ele provisiona sua infraestrutura com base no plano de execução invocando as APIs correspondentes do Compute Engine em segundo plano.
    2. Ele cria um arquivo de estado do Terraform, que é um arquivo JSON que mapeia os recursos no arquivo de configuração aos recursos na infraestrutura do mundo real. O Terraform usa esse arquivo para manter um registro do estado mais recente da sua infraestrutura e determinar quando criar, atualizar e destruir recursos.
    3. Ao executar terraform apply, o Terraform usa o mapeamento no arquivo de estado para comparar a infraestrutura atual com o código e fazer atualizações conforme necessário:

      • Se um objeto de recurso for definido no arquivo de configuração, mas não existir no arquivo de estado, o Terraform o criará.
      • Se há um objeto de recurso no arquivo de estado, mas tem uma configuração diferente do arquivo de configuração, o Terraform atualiza o recurso para corresponder ao arquivo de configuração.
      • Se um objeto de recurso no arquivo de estado corresponder ao seu arquivo de configuração, o Terraform deixará o recurso inalterado.

Guias baseados no Terraform para o Compute Engine

A tabela a seguir lista todos os guias e tutoriais do Terraform para o Compute Engine:

Guia Detalhes
Criar e iniciar uma instância do Compute Engine Explica como criar uma instância de máquina virtual (VM).
Criar uma VM com discos SSD locais Explica como criar uma VM com armazenamento em disco SSD local.
Criar snapshots de disco Explica como criar snapshots padrão para fazer backup periódico dos dados dos discos.
Duplicar um disco com clones Explica como criar clones de disco zonal de um disco atual.
Criar e gerenciar discos replicados de forma síncrona Explica como criar e gerenciar discos replicados.
Criar e usar VMs do Spot Explica como criar e gerenciar VMs spot. As VMs spot são instâncias de VM que excedem a capacidade do Compute Engine. As VMs do Spot estão disponíveis a preços muito mais baixos em comparação com o preço on demand das VMs padrão.
Adicionar chaves SSH a VMs Descreve como adicionar chaves SSH a instâncias de VM que usam o Login do SO e VMs que usam chaves SSH baseadas em metadados.
Como executar scripts de desligamento Explica como criar e executar scripts de desligamento que executam comandos antes que uma instância de VM seja interrompida ou reiniciada.
Criar uma reserva para um projeto único Explica como criar uma reserva de projeto único, que pode ser consumida apenas por instâncias de VM no mesmo projeto.
Criar modelos de instância Descreve como criar e gerenciar modelos de instância.
Escalonamento com base em programações Descreve como criar programações de escalonamento para um MIG. O escalonamento automático baseado em programação permite melhorar a disponibilidade das cargas de trabalho programando a capacidade antes da carga prevista.
Adicionar armazenamento em disco permanente à VM Explica como criar um volume de disco persistente zonal em branco e que não é de inicialização e anexá-lo à VM.
Configurar o Login do SO Descreve como configurar o login do SO.
Anexar um disco que não é de inicialização a uma VM Explica como anexar um disco zonal que não seja de inicialização à VM.
Criar uma VM que use uma conta de serviço gerenciada pelo usuário Explica como criar uma instância de VM configurada para usar uma conta de serviço gerenciado pelo usuário. Uma conta de serviço é um tipo especial de conta normalmente usado por um aplicativo ou uma carga de trabalho de computação para fazer chamadas de API autorizadas.
Aumentar o tamanho de um disco permanente Explica como aumentar o tamanho de um disco permanente.
Ativar exibições virtuais em uma VM Descreve como ativar telas virtuais em uma instância de VM.
Criar um MIG em uma única zona Descreve como criar um grupo gerenciado de instâncias (MIG) em uma única zona. Colocar todas as VMs do MIG em uma única zona ajuda a minimizar a latência, o que é útil para determinadas cargas de trabalho, por exemplo, cargas de trabalho em lote.
Como criar uma instância de VM com um nome do host personalizado Explica como criar uma instância de VM com um nome do host personalizado.
Configurar uma verificação de integridade e recuperação automática com base em aplicativos Descreve como configurar uma verificação de integridade baseada em aplicativo para recuperação automática em um MIG.
Criar um MIG que use VMs preemptivas Descreve como criar um MIG que usa instâncias de VM preemptiva. As VMs preemptivas são úteis se a carga de trabalho puder tolerar interrupções e você quiser aproveitar a economia associada às VMs preemptivas.
Adicionar e remover VMs de um MIG Descreve como adicionar e remover VMs de um MIG.
Criar um MIG com o escalonamento automático ativado Descreve como criar um MIG com escalonamento automático que adiciona e remove VMs com base na utilização média da CPU no grupo.
Criar um MIG usando discos com estado Descreve como criar um MIG que usa instâncias de VM preemptiva. As VMs preemptivas são úteis se a carga de trabalho puder tolerar interrupções e você quiser aproveitar a economia associada às VMs preemptivas.
Como criar instâncias de VM do SQL Server Explica como criar instâncias de VM do Microsoft SQL Server. O SQL Server é um sistema de banco de dados executado no Windows Server e em algumas distribuições Linux. Use o SQL Server no Compute Engine como parte do back-end de seus aplicativos, como um ambiente de desenvolvimento e teste flexível ou junto aos sistemas no local para backup e recuperação de desastres.
Criar uma atribuição de política do SO Explica como criar uma atribuição de política do SO. É possível usar políticas do SO para manter configurações de software consistentes nas instâncias de VM do Linux e do Windows.
Como configurar metadados com estado em MIGs Descreve como configurar metadados com estado em MIGs. Os metadados da instância são úteis para definir propriedades e se comunicar com os aplicativos por meio do servidor de metadados.
Como configurar discos permanentes com estado em MIGs Explica como configurar discos permanentes com estado em MIGs. Configurar discos permanentes como "com estado" permite que você aproveite a recuperação automática da instância de VM e as atualizações automatizadas enquanto preserva o estado dos discos.
Como configurar endereços IP com estado em MIGs Descreve como configurar endereços IP com estado em MIGs. Ao configurar endereços IP com estado em um MIG, você garante que os endereços IP sejam preservados quando as instâncias de VM no grupo são recuperadas automaticamente, atualizadas e recriadas.
Definir um formato de distribuição de destino para VMs em um MIG regional Explica como definir um formato de distribuição de destino para VMs.
Criar um MIG com VMs em várias zonas em uma região Descreve como criar um MIG com as VMs espalhadas por várias zonas em uma região. A distribuição da carga de aplicativos entre várias zonas protege a carga de trabalho contra falhas zonais.
Desativar e reativar a redistribuição proativa de VMs em um MIG regional Descreve como desativar e reativar a redistribuição proativa de VMs em um MIG regional. Em um MIG regional, para manter um número par de VMs nas zonas selecionadas na região, use a redistribuição proativa de instâncias. Essa configuração maximiza a disponibilidade do aplicativo no caso de uma falha no nível da zona.

Módulos e blueprints do Terraform para o Compute Engine

Os módulos e modelos ajudam a automatizar o provisionamento e o gerenciamento de recursos do Google Cloud em escala. Um módulo é um conjunto reutilizável de arquivos de configuração do Terraform que cria uma abstração lógica dos recursos do Terraform. Um blueprint é um pacote de módulos implantáveis e reutilizáveis e uma política que implementa e documenta uma solução específica.

A tabela a seguir lista todos os módulos e blueprints relacionados ao Compute Engine:

Módulo ou blueprint Detalhes
terraform-google-vm Coleção de submódulos de opinião que podem ser usados como elementos básicos para provisionar VMs no Google Cloud.
terraform-google-startup-scripts Fornece uma biblioteca de scripts de inicialização úteis para incorporar em VMs
terraform-google-container-vm Implanta contêineres em instâncias do Compute Engine

Recursos do Terraform para o Compute Engine

Recursos são os elementos fundamentais da linguagem do Terraform. Cada no bloco "resource", que descreve um ou mais objetos de infraestrutura, como ou instâncias de computação.

A tabela a seguir lista os recursos do Terraform disponíveis para o Compute Engine:

Recursos do Terraform Fontes de dados

A seguir