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. Aprenda a usar o Terraform para provisionar infraestruturas 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ê vai concluir o seguinte:

  1. Ative 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. 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.

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

  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 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 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 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 associada à 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 Conceder permissão a um fluxo de trabalho para acessar 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 essa 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 a seguir:

    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 respostas 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 que começa 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 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 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