Programar e executar um cron job usando o Terraform
Neste guia de início rápido, mostramos como usar o Terraform para criar um cron job do Cloud Scheduler. O Terraform é uma ferramenta de infraestrutura como código (IaC) que permite criar, mudar e melhorar de maneira previsível sua infraestrutura em nuvem usando código. Saiba mais sobre o uso do Terraform para provisionar infraestrutura em Google Cloud.
O Cloud Scheduler tem um nível gratuito. Não convém executar este guia de início rápido. resultar em custos. Para saber mais informações, consulte Preços.
Neste guia de início rápido, você fará as seguintes tarefas:
- Use o Terraform para criar um cron job para o Cloud Scheduler.
- Definir uma programação recorrente para o job.
- Especificar um tópico do Pub/Sub como destino do job.
- Execute o job.
- Verificar se o job foi concluído com sucesso.
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.
-
To initialize the gcloud CLI, run the following command:
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.
-
To initialize the gcloud CLI, run the following command:
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 você precisar instalar o Terraform, consulte a documentação do HashiCorp Terraform.
Criar um arquivo de configuração do Terraform
Para usar o Terraform com o Cloud Scheduler, você precisa criar um arquivo de configuração para descrever sua infraestrutura e criar um plano de execução. Em seguida, aplique o arquivo de configuração à plataforma ou ao serviço para realizar operações que provisionam a infraestrutura.
Siga estas etapas para criar um arquivo de configuração do Terraform chamado
main.tf
:
Abra um terminal e crie um diretório:
mkdir terraform
Acesse o diretório
terraform
:cd terraform
Adicione um novo arquivo,
main.tf
, ao diretório:nano main.tf
Adicione os seguintes recursos do provedor do Terraform para Google Cloud ao arquivo
main.tf
:Ative as APIs Cloud Scheduler e Pub/Sub:
Crie um tópico do Pub/Sub como um recurso para o qual os editores podem enviar mensagens:
Isso criará um tópico chamado
pubsub_topic
.Crie uma assinatura para receber mensagens publicadas no tópico do Pub/Sub:
Crie um cron job usando o recurso
google_cloud_scheduler_job
:Os seguintes argumentos são usados no exemplo:
name
: o nome do job.description
: uma descrição do trabalho.schedule
: a frequência do job, usando um formato baseado em unix-cron.Neste exemplo,
30 16 * * 7
significa que o job será executado às 16h30 aos domingos. Para mais informações, consulte Formato e fuso horário do cron job.region
: a região em que o job está localizado.pubsub_target
: o destino do tópico do Pub/Sub, incluindo o nome completo do recurso do tópico (topic_name
) em que o payload da mensagem (data
) é publicado quando o job é executado.
Outros argumentos são aceitos. Para mais detalhes, consulte a referência de argumentos do registro do Terraform.
Criar o cron job
Implante os recursos do Terraform para criar o cron job.
Abra um terminal e, no diretório
terraform
, inicialize o Terraform:terraform init
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
.Crie o cron job:
terraform apply
No prompt Digite um valor, digite
yes
para continuar criando recursos.Confirme se um job foi criado:
gcloud scheduler jobs describe test-job --location=us-central1
A saída será semelhante a esta:
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
Você criou um job que envia uma mensagem para um tópico do Pub/Sub às 16h30 aos domingos. Agora você pode executar o job.
Executar o job
Além de executar de acordo com a programação especificada, você pode forçar a execução do job imediatamente executando o comando a seguir.
gcloud scheduler jobs run test-job --location=us-central1
Devido a algumas configurações iniciais, a execução do primeiro job criado em um projeto pode levar alguns minutos.
Verifique os resultados:
Verifique se o tópico do Pub/Sub está recebendo mensagens do seu trabalho.
Receber mensagens de Pub/Sub de uma assinatura:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
Se nenhuma mensagem for extraída inicialmente, execute o comando novamente.
Veja os resultados da execução do job. A saída será semelhante a:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
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.
- A exclusão do projeto do Google Cloud interrompe o faturamento de todos os recursos usados
nele. Por padrão, todos os arquivos no diretório principal do Cloud Shell (por exemplo, todos os arquivos do Terraform) são mantidos entre as sessões.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Como alternativa, você pode excluir todos os recursos criados com o Terraform.
O comando
terraform destroy
encerra todos os recursos especificados no estado do Terraform. Ele não destrói recursos que não são gerenciados pelo projeto atual do Terraform. O arquivo de configuração do Terraform não é destruído. Para mais informações, consulte Destruir a infraestrutura.terraform destroy