Criar um fluxo de trabalho usando o Terraform

Neste guia de início rápido, mostramos como criar, implantar e executar seu primeiro fluxo de trabalho usando o Terraform. O Terraform é uma ferramenta de infraestrutura como código que permite criar, alterar e melhorar de maneira previsível sua infraestrutura de nuvem por meio de código. Saiba como usar o Terraform para provisionar a infraestrutura no Google Cloud.

Neste guia de início rápido, o fluxo de trabalho de amostra envia uma solicitação a uma API pública e depois retorna a resposta da API.

Você concluirá as seguintes etapas:

  1. Ativar a API Workflows usando o Terraform.
  2. Crie uma conta de serviço para o fluxo de trabalho usando o Terraform.
  3. Definir e implantar um fluxo de trabalho usando o Terraform.
  4. Execute o fluxo de trabalho usando a Google Cloud CLI.

Antes de começar

As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito do Google Cloud.

Observe que o Cloud Shell já tem o Terraform integrado. Se você precisar instalar o Terraform, consulte a documentação do Terraform da HashiCorp.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  11. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com

Criar um arquivo de configuração do Terraform

Crie um arquivo de configuração do Terraform com o nome main.tf e inclua a Provedor do Google para recursos do Terraform usados em neste guia de início rápido.

É possível usar interpolação para substituições, como variáveis de referência, atributos de recursos e funções de chamada.

  1. Crie um diretório:

    mkdir terraform
  2. Acesse o diretório terraform:

    cd terraform
  3. Adicione um novo arquivo, main.tf, ao diretório:

    nano main.tf
  4. Adicione os seguintes recursos ao arquivo main.tf:

    1. Atribua o ID do projeto:

      provider "google" {
      project = "PROJECT_ID"
      }

      Substitua PROJECT_ID pelo ID do projeto.

    2. Ative a API Workflows:

      # Enable Workflows API
      resource "google_project_service" "default" {
        service            = "workflows.googleapis.com"
        disable_on_destroy = false
      }

    3. Crie uma conta de serviço para o fluxo de trabalho:

      # Create a dedicated service account
      resource "google_service_account" "default" {
        account_id   = "sample-workflows-sa"
        display_name = "Sample Workflows Service Account"
      }

    4. Defina o fluxo de trabalho usando o Recurso google_workflows_workflow:

      # Create a workflow
      resource "google_workflows_workflow" "default" {
        name            = "sample-workflow"
        region          = "us-central1"
        description     = "A sample workflow"
        service_account = google_service_account.default.id
        labels = {
          env = "test"
        }
        user_env_vars = {
          url = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam"
        }
        source_contents = <<-EOF
        # This is a sample workflow that you can replace with your source code
        #
        # The workflow does the following:
        # - Retrieves the current date from a public API and stores the
        #   response in `currentDate`
        # - Retrieves a list of Wikipedia articles from a public API related
        #   to the day of the week stored in `currentDate`
        # - Returns the list of articles in the workflow output
        #
        # Note that when you define workflows in Terraform, variables must be
        # escaped with two dollar signs ($$) and not a single sign ($)
      
        - getCurrentDate:
            call: http.get
            args:
                url: $${sys.get_env("url")}
            result: currentDate
        - readWikipedia:
            call: http.get
            args:
                url: https://en.wikipedia.org/w/api.php
                query:
                    action: opensearch
                    search: $${currentDate.body.dayOfWeek}
            result: wikiResult
        - returnOutput:
            return: $${wikiResult.body[1]}
      EOF
      
        depends_on = [google_project_service.default]
      }
      

Os seguintes argumentos são usados no fluxo de trabalho de exemplo:

  • name: o nome do fluxo de trabalho.
  • region: o local do seu fluxo de trabalho.
  • description: uma descrição do fluxo de trabalho.
  • service_account: o endereço de e-mail ou ID exclusivo da conta de serviço associadas à versão mais recente do fluxo de trabalho. Esta conta de serviço representa a identidade do fluxo de trabalho e determina quais permissões que o fluxo de trabalho tem. Se você não especificar uma conta de serviço durante criação do fluxo de trabalho, ele usa a Compute Engine padrão conta de serviço para a própria identidade. Para mais informações, consulte Conceda permissão a um fluxo de trabalho para acessar os recursos do Google Cloud.
  • labels: uma lista de pares de rótulos de chave-valor para atribuir a esse fluxo de trabalho, que ajuda a organizar suas instâncias do Google Cloud. Para mais informações, consulte O que são rótulos?
  • user_env_vars: variáveis de ambiente definidas pelo usuário associadas a esta revisão do fluxo de trabalho. Para mais informações, consulte Use variáveis de ambiente.
  • source_contents: o código dos fluxos de trabalho a serem executados. Para o limite de tamanho de arquivo, consulte Limites de recursos.

Outros argumentos opcionais incluem:

  • crypto_key_name: o ID do recurso de uma chave do Cloud Key Management Service no formato:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

    Para mais informações, consulte Use chaves de criptografia gerenciadas pelo cliente.

  • call_log_level: o nível de registro a ser aplicado a chamadas e respostas de chamadas durante as execuções desse fluxo de trabalho. Os valores possíveis são:

    • CALL_LOG_LEVEL_UNSPECIFIED
    • LOG_ALL_CALLS
    • LOG_ERRORS_ONLY
    • LOG_NONE

    Para mais informações, consulte Registro de chamadas.

  • project: o ID do projeto ao qual o recurso pertence. Se for não fornecido, o projeto do provedor será usado.

  • name_prefix: cria um nome exclusivo começando com o prefixo especificado. Se esse valor e name não forem especificados, um valor aleatório será escolhido para o nome.

Criar e executar o fluxo de trabalho

Implante seus recursos do Terraform para criar o fluxo de trabalho e execute a de trabalho de visualização de dados.

  1. Inicialize o Terraform no diretório:

    terraform init
  2. Verifique se as alterações propostas com o Terraform correspondem ao plano esperado:

    terraform plan

    Ignore a observação sobre o uso da opção -out.

  3. Crie o fluxo de trabalho:

    terraform apply
  4. No prompt Insira um valor, digite yes para continuar a criação da do Google Cloud.

  5. Confirme se um fluxo de trabalho foi criado:

    gcloud workflows list --location us-central1

    A saída será semelhante a:

    NAME                                                                    STATE   REVISION_ID  UPDATE_TIME
    projects/project-name/locations/us-central1/workflows/sample-workflow   ACTIVE  000001-f9a   2024-02-24T13:38:58.353765906Z
  6. Também é possível executar o fluxo de trabalho:

    gcloud workflows execute sample-workflow

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.

  1. Exclua todos os recursos que você criou com o Terraform:
    terraform destroy
  2. Exclua o fluxo de trabalho que você criou:
    gcloud workflows delete sample-workflow
    Quando aparecer uma mensagem perguntando se você quer continuar, digite y.
  3. Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Google Cloud interrompe o faturamento de todos os recursos usados nele.

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

A seguir