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 gratuito 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
-
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, primeiro, tem 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.
-
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.
-
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem 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.
-
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.
-
- O Cloud Shell já tem o Terraform integrado. Se precisar de instalar o Terraform, consulte a documentação do HashiCorp Terraform.
Abra um terminal e crie um diretório:
mkdir terraform
Aceda ao diretório
terraform
:cd terraform
Adicione um novo ficheiro,
main.tf
, ao diretório:nano main.tf
Adicione 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 por 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 * * 7
significa 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 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 init
Verifique se as alterações que propõe com o Terraform correspondem ao plano esperado:
terraform plan
Pode ignorar a nota sobre não usar a opção
-out
.Crie o trabalho cron:
terraform apply
No comando Introduza um valor, escreva
yes
para continuar com a criação de recursos.Confirme que é criada uma tarefa:
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 5
Se 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 do 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 destroy
rescinde 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
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
:
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 às 16:30 aos domingos. Agora, pode executar a tarefa.
Execute a tarefa
Além de ser executado de acordo com a respetiva programação especificada, 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.