Implante sua base usando o Terraform baixado do console

Com o Guia de configuração da base do Cloud no console do Google Cloud, os administradores podem configurar uma base do Google Cloud pronta para empresas usando uma interface guiada e implantá-la diretamente no console do Google Cloud ou fazer o download dela como Terraform.

Os administradores podem configurar uma entidade, usuários e grupos da organização, bem como vincular ou configurar uma conta de faturamento e configurar a hierarquia de recursos (pastas e projetos), as políticas do IAM, as redes iniciais e a geração de registros e o monitoramento centralizados.

Quando os clientes fazem o download da configuração como Terraform, o console gera um arquivo do Terraform para implantação posterior. Este tutorial fornece instruções para implantação do arquivo baixado do Terraform e considera todos os recursos de infraestrutura implantados anteriormente.

Antes de começar

Veja as práticas recomendadas para usar o Terraform, que incluem diretrizes de desenvolvimento eficaz com o Terraform para os membros da equipe e os fluxos de trabalho.

Se você já implantou a configuração da base clicando no botão "Implantar" no console e agora quer implantar uma configuração do Terraform transferida por download usando seu próprio pipeline, faça o seguinte:

  • Faça o download do arquivo de estado do Terraform gerado pelo console.
  • Inclua o arquivo de estado salvo no seu próprio processo de pipeline.

Para mais informações, consulte Implantar o Terraform após a implantação no console.

Implantar o Terraform com o Cloud Shell

O Cloud Shell vem com o Terraform pré-instalado e pré-autenticado para que você possa começar rapidamente.

  1. No guia de configuração no console, clique em Fazer o download como Terraform e salve a configuração.
  2. Abra o Cloud Shell.
  3. No Cloud Shell, crie um diretório e navegue até ele:

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. Faça o upload da configuração do Terraform que você salvou na etapa 1.

    No menu Mais do Cloud Shell, selecione Fazer upload e clique em Escolher arquivos para selecionar a configuração do Terraform. Defina o diretório de destino como a pasta que você criou na etapa anterior e clique em Fazer upload.

  5. Verifique se você está no diretório cloud-foundation-example.

  6. Crie um bucket do Cloud Storage para armazenar o estado remoto do Terraform. Um estado remoto permite que o Terraform use armazenamentos de objetos, como o Cloud Storage, para armazenar informações de estado sobre sua infraestrutura gerenciada pelo Terraform. Essa configuração oferece benefícios como delegação de equipe e bloqueio de estado.

    Para criar o bucket do Cloud Storage, execute o seguinte comando:

    gsutil mb gs://tf-state-PROJECT_ID
    
  7. Defina uma configuração de back-end do Terraform em um arquivo backend.tf e substitua PROJECT_ID para corresponder ao ID do projeto usado na etapa anterior. Para mais detalhes, consulte como armazenar o estado do Terraform no Cloud Storage.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Execute terraform init. Esse processo inicializa o diretório de trabalho que contém os arquivos de configuração do Terraform e o back-end.

  9. Execute terraform plan para acessar os recursos criados pelo Terraform. Exemplo de saída:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Aplique a configuração executando terraform apply, que implanta os recursos no Google Cloud. Quando solicitado, digite yes.

  11. Confira o console do Google Cloud para verificar se os recursos estão implantados na conta ou projeto.

Reimplantar o Terraform com o Cloud Shell

O Terraform armazena informações sobre recursos implantados no arquivo de estado do Terraform. Se você seguiu as etapas anteriores para implantar a configuração, é altamente recomendável reutilizar o mesmo back-end para detectar, remover e atualizar automaticamente os recursos definidos pela nova configuração exportada.

  1. No guia de configuração no console, clique em Fazer o download como Terraform e salve a configuração.
  2. Abra o Cloud Shell.
  3. No Cloud Shell, crie um novo diretório e navegue até ele:
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. Faça o upload da configuração do Terraform que você salvou na etapa 1.

    No menu Mais do Cloud Shell, selecione Fazer upload e clique em Escolher arquivos para selecionar a configuração do Terraform. Defina o diretório de destino como a pasta que você criou na etapa anterior e clique em Fazer upload.

  5. Verifique se você está no diretório cloud-foundation-example-redeploy.

  6. Verifique se o bucket de back-end e o arquivo de estado do Cloud Storage criados anteriormente existem.

    gsutil ls gs://tf-state-PROJECT_ID/terraform/state/
    
    Exemplo de saída:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. Defina uma configuração de back-end do Terraform em um arquivo backend.tf reutilizando o mesmo bucket e prefixo.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Execute terraform init. Esse processo inicializa o diretório de trabalho que contém os arquivos de configuração do Terraform e o back-end.

  9. Execute terraform plan para ver os recursos que o Terraform cria, altera ou destrói. Exemplo de saída:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Aplique a configuração executando terraform apply, que implanta os recursos no Google Cloud. Quando solicitado, digite yes.

  11. Confira o console do Google Cloud para verificar se os recursos estão implantados na conta ou projeto.

Implante o Terraform após a implantação no console

Se você já implantou a configuração da base usando o botão "Implantar" no console, um arquivo de estado do Terraform foi gerado. Se você quiser fazer o download da configuração do Terraform para implantar usando seu próprio pipeline, inclua o arquivo de estado do Terraform que foi gerado durante a implantação do console.

Para fazer o download e usar o arquivo de estado:

  1. Para fazer o download do arquivo de estado do Terraform, siga os seguintes procedimentos em Gerenciar o arquivo de estado do Terraform:

    1. Bloqueie a implantação.
    2. Faça o download do arquivo de estado.
    3. Desbloqueie a implantação.
  2. A fim de mover o arquivo de estado transferido por download para um bucket do Cloud Storage, consulte Armazenar o estado do Terraform em um bucket do Cloud Storage.

  3. Para reimplantar a configuração do Terraform, consulte Reimplantar o Terraform com o Cloud Shell.

Solução de problemas de implantações do Terraform

Implantar o Terraform com recursos atuais

Se a configuração do Terraform transferida por download tentar criar recursos que já existem, o Terraform será fechado com um código de erro 409. Para resolver esses erros, exclua o recurso usando o console do Google Cloud ou a CLI gcloud e aplique novamente a configuração do Terraform. Como alternativa, se esses recursos forem essenciais e não puderem ser excluídos, é possível importar recursos para o estado do Terraform.

Gerenciar a infraestrutura como código com o Terraform, o Cloud Build e o GitOps

Recomendamos seguir este tutorial para ver instruções completas. Essa opção é destinada a administradores e operadores de plataformas que buscam uma estratégia para fazer alterações na infraestrutura de maneira previsível e repetida. O guia considera que você já conhece o Google Cloud, o Linux e o GitHub. As etapas avançadas dessa opção são as seguintes:

  1. Configurar seu repositório GitHub.
  2. Configurar o Terraform para armazenar o estado em um bucket do Cloud Storage.
  3. Conceder permissões à conta de serviço do Cloud Build.
  4. Conectar o Cloud Build ao seu repositório GitHub.
  5. Alterar a configuração do ambiente em uma ramificação de recurso.
  6. Promover mudanças no ambiente de desenvolvimento.
  7. Promover mudanças no ambiente de produção.