Menjadwalkan dan menjalankan tugas cron menggunakan Terraform

Panduan memulai ini menunjukkan cara menggunakan Terraform untuk membuat tugas cron Cloud Scheduler. Terraform adalah alat infrastruktur sebagai kode (IaC) yang memungkinkan Anda membuat, mengubah, dan meningkatkan infrastruktur cloud secara tepat menggunakan kode. Anda dapat mempelajari lebih lanjut cara menggunakan Terraform untuk menyediakan infrastruktur di Google Cloud.

Cloud Scheduler memiliki paket gratis dan menjalankan panduan memulai ini tidak akan menimbulkan biaya apa pun. Untuk informasi selengkapnya, lihat Harga.

Dalam panduan memulai ini, Anda akan:

  1. Menggunakan Terraform untuk membuat tugas cron untuk Cloud Scheduler.
  2. Tetapkan jadwal berulang untuk tugas.
  3. Tentukan topik Pub/Sub sebagai target tugas.
  4. Jalankan tugas.
  5. Pastikan tugas telah berhasil berjalan.

Sebelum memulai

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  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. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. 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.

  8. Cloud Shell telah mengintegrasikan Terraform. Jika Anda perlu menginstal Terraform, lihat dokumentasi HashiCorp Terraform.

Membuat file konfigurasi Terraform

Untuk menggunakan Terraform dengan Cloud Scheduler, Anda perlu membuat file konfigurasi untuk mendeskripsikan infrastruktur dan membuat rencana eksekusi. Kemudian, Anda menerapkan file konfigurasi ke platform atau layanan untuk melakukan operasi yang menyediakan infrastruktur Anda.

Selesaikan langkah-langkah berikut untuk membuat file konfigurasi Terraform yang bernama main.tf:

  1. Buka terminal dan buat direktori:

    mkdir terraform
  2. Buka direktori terraform:

    cd terraform
  3. Tambahkan file baru, main.tf, ke direktori:

    nano main.tf
  4. Tambahkan resource Penyedia Terraform untuk Google Cloud berikut ke file main.tf:

    1. Aktifkan Cloud Scheduler dan Pub/Sub API:

      # Enable Cloud Scheduler API
      resource "google_project_service" "scheduler" {
        service            = "cloudscheduler.googleapis.com"
        disable_on_destroy = false
      }
      # Enable Pub/Sub API
      resource "google_project_service" "pubsub" {
        service            = "pubsub.googleapis.com"
        disable_on_destroy = false
      }
    2. Buat topik Pub/Sub sebagai resource tempat pesan dapat dikirim oleh penayang:

      # Create Pub/Sub topic
      resource "google_pubsub_topic" "default" {
        name = "pubsub_topic"
      }

      Tindakan ini akan membuat topik yang disebut pubsub_topic.

    3. Buat langganan untuk menerima pesan yang dipublikasikan ke topik Pub/Sub:

      # Create Pub/Sub subscription
      resource "google_pubsub_subscription" "default" {
        name  = "pubsub_subscription"
        topic = google_pubsub_topic.default.name
      }
    4. Buat tugas cron menggunakan resource google_cloud_scheduler_job:

      # Create a cron job using Cloud Scheduler
      resource "google_cloud_scheduler_job" "default" {
        name        = "test-job"
        description = "test job"
        schedule    = "30 16 * * 7"
        region      = "us-central1"
      
        pubsub_target {
          topic_name = google_pubsub_topic.default.id
          data       = base64encode("Hello world!")
        }
      }

      Argumen berikut digunakan dalam contoh:

      • name: nama tugas.
      • description: deskripsi untuk tugas.
      • schedule: frekuensi untuk tugas, menggunakan format berdasarkan unix-cron.

        Dalam contoh ini, 30 16 * * 7 berarti tugas akan berjalan pada pukul 16.30 pada hari Minggu. Untuk mengetahui informasi selengkapnya, lihat Format tugas Cron dan zona waktu.

      • region: region tempat tugas berada.

      • pubsub_target: target topik Pub/Sub, termasuk nama resource lengkap topik (topic_name) tempat payload pesan (data) dipublikasikan saat tugas dijalankan.

      Argumen lain didukung. Untuk mengetahui detailnya, lihat referensi argumen Registry Terraform.

Membuat cron job

Deploy resource Terraform Anda untuk membuat tugas cron.

  1. Buka terminal dan di direktori terraform, lakukan inisialisasi Terraform:

    terraform init
  2. Pastikan perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

    terraform plan

    Anda dapat mengabaikan catatan terkait tidak menggunakan opsi -out.

  3. Buat tugas cron:

    terraform apply
  4. Pada perintah Enter a value, ketik yes untuk melanjutkan pembuatan resource.

  5. Pastikan tugas dibuat:

    gcloud scheduler jobs describe test-job --location=us-central1

    Outputnya akan mirip dengan berikut ini:

    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

Anda telah membuat tugas yang mengirim pesan ke topik Pub/Sub pada pukul 16.30 pada hari Minggu. Sekarang Anda dapat menjalankan tugas.

Menjalankan tugas

Selain dijalankan sesuai jadwal yang ditentukan, Anda dapat memaksa tugas untuk segera dijalankan dengan menjalankan perintah berikut.

gcloud scheduler jobs run test-job --location=us-central1

Perhatikan bahwa karena beberapa konfigurasi awal, tugas pertama yang dibuat dalam project dapat memerlukan waktu beberapa menit untuk dijalankan.

Memverifikasi hasil

Pastikan topik Pub/Sub Anda menerima pesan dari tugas Anda.

  1. Menarik pesan Pub/Sub dari langganan:

    gcloud pubsub subscriptions pull pubsub_subscription --limit 5
    

    Jika tidak ada pesan yang diambil pada awalnya, jalankan kembali perintah tersebut.

  2. Lihat hasil pengoperasian tugas Anda. Output-nya akan terlihat seperti berikut ini:

    DATA: Hello world!
    MESSAGE_ID: 5028933846601543
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
    

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan di halaman ini, hapus project Google Cloud yang berisi resource tersebut.

  1. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut. Perhatikan bahwa secara default, file apa pun di direktori utama Cloud Shell Anda (misalnya, file Terraform apa pun) akan tetap ada di antara sesi.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID
  2. Atau, Anda dapat menghapus semua resource yang dibuat dengan Terraform.

    Perintah terraform destroy menghentikan semua resource yang ditentukan dalam status Terraform Anda. Tindakan ini tidak akan menghancurkan resource yang tidak dikelola oleh project Terraform saat ini. File konfigurasi Terraform Anda tidak dihancurkan. Untuk informasi selengkapnya, lihat Menghancurkan infrastruktur.

    terraform destroy

Langkah selanjutnya