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, alterar e melhorar de maneira previsível sua infraestrutura em nuvem usando código. Saiba mais sobre como usar o Terraform para provisionar infraestrutura no 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.
- Defina 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.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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 Terraform da HashiCorp.
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 o seguinte provedor do Terraform para recursos do 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 as mensagens podem ser enviadas por editores:
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 job.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 de cron job e fuso horário.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.
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
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[...]
- A exclusão do projeto Google Cloud interrompe o faturamento de todos os
recursos usados nele. Por padrão, todos os arquivos no diretório inicial do Cloud Shell (por exemplo, arquivos do Terraform) são mantidos entre as sessões.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Como alternativa, é possível 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 infraestrutura.terraform destroy
Criar um arquivo de configuração do Terraform
Para usar o Terraform com o Cloud Scheduler, crie um arquivo de configuração para descrever sua infraestrutura e um plano de execução. Em seguida, aplique o arquivo de configuração à sua plataforma ou serviço para realizar operações que provisionam sua infraestrutura.
Siga estas etapas para criar um arquivo de configuração do Terraform chamado
main.tf
:
Criar o cron job
Implante seus recursos do Terraform para criar o cron job.
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, é possível forçar a execução imediata do job executando o seguinte comando.
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.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.