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 em nuvem usando código. Aprenda a usar o Terraform para provisionar 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 retorna a resposta da API.

Você concluirá o seguinte:

  1. Ativar a API Workflows usando o Terraform.
  2. Criar 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. Executar 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.

O Cloud Shell já tem o Terraform integrado. Se você precisar instalar o Terraform, consulte a documentação do HashiCorp Terraform (em inglês).

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. Instale a CLI do Google Cloud.
  3. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  4. Crie ou selecione um projeto do Google Cloud.

    • Crie um projeto do Google Cloud:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto do Google Cloud que você está criando.

    • Selecione o projeto do Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud.

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

  6. Ative as APIs Cloud Resource Manager and Identity and Access Management (IAM):

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com
  7. Instale a CLI do Google Cloud.
  8. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  9. Crie ou selecione um projeto do Google Cloud.

    • Crie um projeto do Google Cloud:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto do Google Cloud que você está criando.

    • Selecione o projeto do Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud.

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

  11. Ative as APIs Cloud Resource Manager and Identity and Access Management (IAM):

    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 chamado main.tf e inclua os recursos do provedor do Google para o Terraform usados neste guia de início rápido.

É possível usar a 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 recursos abaixo 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 amostra:

      • name: o nome do fluxo de trabalho.
      • region: o local do fluxo de trabalho.
      • description: uma descrição do seu fluxo de trabalho.
      • service_account: o endereço de e-mail ou ID exclusivo da conta de serviço associada à versão mais recente do fluxo de trabalho. Essa conta de serviço representa a identidade do fluxo de trabalho e determina quais permissões ele tem. Se você não especificar uma conta de serviço durante a criação do fluxo de trabalho, ele usará a conta de serviço padrão do Compute Engine como identidade. Para mais informações, consulte Conceder 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 este fluxo de trabalho, que ajuda você 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 de fluxo de trabalho. Para mais informações, consulte Usar variáveis de ambiente.
      • source_contents: o código do Workflows a ser executado. Para o limite de tamanho de arquivo, consulte Limites de recurso.

      Outros argumentos opcionais incluem:

      • crypto_key_name é o ID do recurso para uma chave do Cloud Key Management Service no seguinte formato:

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

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

      • call_log_level: o nível de geração de registros a ser aplicado a chamadas e respostas de chamadas durante as execuções do 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 ele não for fornecido, o projeto do provedor será usado.

      • name_prefix: cria um nome exclusivo que começa com o prefixo especificado. Se esse parâmetro 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 e executar o fluxo de trabalho.

  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 Inserir um valor, digite yes para continuar com a criação de recursos.

  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 criados com o Terraform:
    terraform destroy
  2. Exclua o fluxo de trabalho que você criou:
    gcloud workflows delete sample-workflow
    Quando perguntar 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.

      Exclua um projeto do Google Cloud:

      gcloud projects delete PROJECT_ID

A seguir