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 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 exemplo envia uma solicitação para uma API pública e retorna a resposta da API.

Você vai concluir o seguinte:

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

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. Make sure that billing is enabled for your Google Cloud project.

  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. Make sure that billing is enabled for your Google Cloud project.

  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. 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 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 Usar variáveis de ambiente.
  • source_contents: o código Workflows a serem executados. Para saber mais sobre 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 Usar 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 ele não for informado, o projeto do provedor será usado.

  • name_prefix: cria um nome exclusivo que começa com o prefixo especificado. Se esse 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 pelo 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 Digite um valor, digite yes para continuar criando 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.

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

A seguir