Implemente a sua base através do Terraform transferido a partir da consola

A Google Cloud configuração ajuda os administradores a configurar uma Google Cloud base através de um fluxo orientado e a implementar diretamente a partir da Google Cloud consola ou transferir como Terraform.

Este documento ajuda a implementar o seu ficheiro Terraform de Google Cloud configuração.

Antes de começar

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

Se já implementou a configuração base clicando no botão Implementar na consola e agora quer implementar uma configuração do Terraform transferida através da sua própria conduta, tem de fazer o seguinte:

  • Transfira o ficheiro de estado do Terraform gerado pela consola.
  • Inclua o ficheiro de estado transferido no seu próprio processo de pipeline.

Para mais informações, consulte o artigo Implemente o Terraform transferido após a implementação a partir da consola.

Implemente o Terraform com o Cloud Shell

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

  1. No guia de configuração na consola, clique em Transferir como Terraform e guarde 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. Carregue a configuração do Terraform que transferiu no passo 1.

    No menu Mais do Cloud Shell, selecione Carregar e, de seguida, clique em Escolher ficheiros para selecionar a configuração do Terraform. Defina o diretório de destino para a pasta que criou no passo anterior e, de seguida, clique em Carregar.

  5. Certifique-se de que está no diretório cloud-foundation-example.

  6. Crie um contentor do Cloud Storage para armazenar o estado remoto do Terraform. Um estado remoto permite que o Terraform use locais de armazenamento de objetos, como o Cloud Storage, para armazenar informações de estado sobre a sua infraestrutura gerida pelo Terraform. Esta configuração oferece vantagens, como a delegação de equipas e o bloqueio de estado.

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

    gcloud storage buckets create gs://tf-state-PROJECT_ID
    
  7. Defina uma configuração de back-end do Terraform num ficheiro backend.tf e substitua PROJECT_ID para corresponder ao ID do projeto que usou no passo anterior. Para mais detalhes, reveja o artigo sobre como armazenar o estado do Terraform no Cloud Storage.

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

  9. Execute terraform plan para ver os recursos que o Terraform cria. 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 implementa os seus recursos em Google Cloud. Quando lhe for pedido, introduza yes.

  11. Explore a Google Cloud consola para verificar se os seus recursos estão agora implementados na sua conta ou projeto.

Volte a implementar o Terraform com o Cloud Shell

O Terraform armazena informações sobre os recursos implementados no ficheiro de estado do Terraform. Se seguiu os passos anteriores para implementar a sua configuração, recomendamos vivamente que reutilize o mesmo back-end para detetar, remover e atualizar automaticamente os recursos definidos pela nova configuração exportada.

  1. No guia de configuração na consola, clique em Transferir como Terraform e guarde 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. Carregue a configuração do Terraform que transferiu no passo 1.

    No menu Mais do Cloud Shell, selecione Carregar e, de seguida, clique em Escolher ficheiros para selecionar a configuração do Terraform. Defina o diretório de destino para a pasta que criou no passo anterior e, de seguida, clique em Carregar.

  5. Certifique-se de que está no diretório cloud-foundation-example-redeploy.

  6. Certifique-se de que o bucket do back-end do Cloud Storage e o ficheiro de estado criados anteriormente existem.

    gcloud storage ls gs://tf-state-PROJECT_ID/terraform/state/
    
    Exemplo de resultado:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. Defina uma configuração de back-end do Terraform num ficheiro backend.tf reutilizando o mesmo contentor e prefixo.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Corrida terraform init. Este processo inicializa o diretório de trabalho que contém os ficheiros 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 implementa os seus recursos em Google Cloud. Quando lhe for pedido, introduza yes.

  11. Explore a Google Cloud consola para verificar se os seus recursos estão agora implementados na sua conta ou projeto.

Implemente o Terraform transferido após a implementação a partir da consola

Se já implementou a configuração base através do botão Implementar na consola, foi gerado um ficheiro de estado do Terraform. Se quiser transferir a configuração do Terraform para implementar através do seu próprio pipeline, tem de incluir o ficheiro de estado do Terraform que foi gerado durante a implementação da consola.

Para transferir e usar o ficheiro de estado:

  1. Para transferir o ficheiro de estado do Terraform, conclua os seguintes procedimentos em Gerir o ficheiro de estado do Terraform:

    1. Bloqueie a implementação.
    2. Transfira o ficheiro de estado.
    3. Desbloqueie a implementação.
  2. Para mover o ficheiro de estado que transferiu para um contentor do Cloud Storage, consulte o artigo Armazene o estado do Terraform num contentor do Cloud Storage.

  3. Para voltar a implementar a configuração do Terraform, consulte o artigo Volte a implementar o Terraform com o Cloud Shell.

Resolução de problemas de implementações do Terraform

Implemente o Terraform com recursos existentes

Se a configuração do Terraform transferida tentar criar recursos que já existem, o Terraform termina com um código de erro 409. Para resolver estes erros, pode eliminar o recurso através da Google Cloud consola ou da CLI gcloud e, em seguida, voltar a aplicar a configuração do Terraform. Em alternativa, se estes recursos forem críticos e não puderem ser eliminados, pode importar recursos para o seu estado do Terraform.

Faça a gestão da infraestrutura como código com o Terraform, o Cloud Build e o GitOps

Recomendamos que siga este tutorial para ver instruções completas. Esta opção destina-se a administradores e operadores de plataformas que procuram uma estratégia para fazer alterações à infraestrutura de forma previsível e repetida. O guia pressupõe que tem conhecimentos sobre o Google Cloud, o Linux e o GitHub. Os passos gerais desta opção são os seguintes:

  1. Configure o seu repositório do GitHub.
  2. Configure o Terraform para armazenar o estado num contentor do Cloud Storage.
  3. Conceda autorizações à sua conta de serviço do Cloud Build.
  4. Associe o Cloud Build ao seu repositório do GitHub.
  5. Altere a configuração do ambiente numa ramificação de funcionalidades.
  6. Promova alterações para o ambiente de desenvolvimento.
  7. Promova alterações para o ambiente de produção.