Agende e execute uma tarefa cron com o Terraform
Este início rápido mostra como usar o Terraform para criar uma tarefa cron do Cloud Scheduler. O Terraform é uma ferramenta de infraestrutura como código (IaC) que lhe permite criar, alterar e melhorar de forma previsível a sua infraestrutura na nuvem através de código. Pode saber mais sobre a utilização do Terraform para aprovisionar infraestrutura no Google Cloud.
O Cloud Scheduler tem um nível sem custo financeiro e a execução deste início rápido não deve resultar em custos. Para mais informações, consulte a secção Preços.
Neste início rápido:
- Use o Terraform para criar uma tarefa cron para o Cloud Scheduler.
- Defina um horário recorrente para a tarefa.
- Especifique um tópico do Pub/Sub como o destino da tarefa.
- Execute a tarefa.
- Verifique se a tarefa foi executada com êxito.
Antes de começar
As restrições de segurança definidas pela sua organização podem impedir a conclusão dos seguintes passos. Para informações de resolução de problemas, consulte o artigo Desenvolva aplicações num ambiente Google Cloud restrito.
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
-
Enable the Resource Manager and Service Usage APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable cloudresourcemanager.googleapis.com
serviceusage.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
-
Enable the Resource Manager and Service Usage APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable cloudresourcemanager.googleapis.com
serviceusage.googleapis.com - O Cloud Shell já tem o Terraform integrado. Se precisar de instalar o Terraform, consulte a documentação do HashiCorp Terraform.
-
Administrador do Cloud Scheduler (
roles/cloudscheduler.admin) -
Editor do Pub/Sub (
roles/pubsub.editor) Abra um terminal e crie um diretório:
mkdir terraformAceda ao diretório
terraform:cd terraform
Adicione um novo ficheiro,
main.tf, ao diretório:nano main.tfAdicione o seguinte fornecedor do Terraform para Google Cloud recursos ao ficheiro
main.tf:Ative as APIs Cloud Scheduler e Pub/Sub:
Crie um tópico Pub/Sub como um recurso para o qual as mensagens podem ser enviadas pelos publicadores:
Esta ação cria um tópico denominado
pubsub_topic.Crie uma subscrição para receber mensagens publicadas no tópico do Pub/Sub:
Crie uma tarefa cron com o recurso
google_cloud_scheduler_job:Os seguintes argumentos são usados no exemplo:
name: o nome da tarefa.description: uma descrição do trabalho.schedule: a frequência da tarefa, usando um formato baseado no unix-cron.Neste exemplo,
30 16 * * 7significa que a tarefa vai ser executada às 16:30 aos domingos. Para mais informações, consulte o artigo Formato de tarefa cron e fuso horário.region: a região onde o trabalho reside.pubsub_target: o destino do tópico do Pub/Sub, incluindo o nome completo do recurso do tópico (topic_name) para o qual o payload da mensagem (data) é publicado quando a tarefa é executada.
São suportados outros argumentos. Para ver detalhes, consulte a referência de argumentos do registo do Terraform.
Abra um terminal e, no diretório
terraform, inicialize o Terraform:terraform initVerifique se as alterações que propõe com o Terraform correspondem ao plano esperado:
terraform planPode ignorar a nota sobre não usar a opção
-out.Crie a tarefa cron:
terraform applyNo comando Introduza um valor, escreva
yespara continuar com a criação de recursos.Confirme que é criado um trabalho:
gcloud scheduler jobs describe test-job --location=us-central1
O resultado deve ser semelhante ao seguinte:
description: test job lastAttemptTime: '2024-04-04T13:56:00.669530Z' name: projects/PROJECT_ID/locations/us-central1/jobs/test-job pubsubTarget: data: dGVzdA== topicName: projects/PROJECT_ID/topics/pubsub_topic schedule: '30 16 * * 7' scheduleTime: '2024-04-04T13:58:00.737907Z' state: ENABLED
Extraia mensagens do Pub/Sub de uma subscrição:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5Se não forem extraídas mensagens inicialmente, execute o comando novamente.
Veja os resultados da execução da tarefa. O resultado deve ser semelhante ao seguinte:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]- A eliminação do seu projeto Google Cloud interrompe a faturação de todos os recursos
usados nesse projeto. Tenha em atenção que, por predefinição, todos os ficheiros no diretório principal do Cloud Shell (por exemplo, todos os ficheiros Terraform) persistem entre sessões.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Em alternativa, pode eliminar todos os recursos que criou com o Terraform.
O comando
terraform destroyrescinde todos os recursos especificados no seu estado do Terraform. Não destrói os recursos que não são geridos pelo projeto do Terraform atual. O ficheiro de configuração do Terraform não é destruído. Para mais informações, consulte o artigo Destrua a infraestrutura.terraform destroy
Funções necessárias
Para receber as autorizações de que precisa para concluir este início rápido, peça ao seu administrador para lhe conceder as seguintes funções de IAM no seu projeto:
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie um ficheiro de configuração do Terraform
Para usar o Terraform com o Cloud Scheduler, tem de criar um ficheiro de configuração para descrever a sua infraestrutura e criar um plano de execução. Em seguida, aplica o ficheiro de configuração à sua plataforma ou serviço para realizar operações que aprovisionam a sua infraestrutura.
Conclua os passos seguintes para criar um ficheiro de configuração do Terraform denominado
main.tf:
Para outro exemplo de utilização do Terraform com o Cloud Scheduler, consulte o artigo Executar serviços do Cloud Run de acordo com uma programação.
Crie o trabalho cron
Implemente os seus recursos do Terraform para criar a tarefa cron.
Criou uma tarefa que envia uma mensagem para um tópico Pub/Sub aos domingos às 16:30. Agora, pode executar a tarefa.
Execute a tarefa
Além de ser executado de acordo com o respetivo agendamento especificado, pode forçar a execução imediata da tarefa executando o seguinte comando.
gcloud scheduler jobs run test-job --location=us-central1
Tenha em atenção que, devido a alguma configuração inicial, a primeira tarefa criada num projeto pode demorar alguns minutos a ser executada.
Valide os resultados
Verifique se o tópico do Pub/Sub está a receber mensagens da tarefa.
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.