Membuat dan menjadwalkan cron job menggunakan Terraform

Panduan memulai ini menunjukkan cara menggunakan Terraform untuk membuat cron job Cloud Scheduler. Terraform adalah alat Infrastructure as Code (IaC) yang memungkinkan Anda membuat, mengubah, dan meningkatkan kualitas infrastruktur cloud 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 seharusnya tidak menimbulkan biaya apa pun. Untuk informasi selengkapnya, lihat Harga.

Dalam panduan memulai ini, Anda:

  1. Gunakan Terraform untuk membuat cron job untuk Cloud Scheduler.
  2. Tetapkan jadwal berulang untuk tugas tersebut.
  3. Tentukan topik Pub/Sub sebagai target tugas.
  4. Menjalankan tugas.
  5. Verifikasi bahwa tugas telah berhasil dijalankan.

Sebelum memulai

  1. Login ke Akun Google Anda.

    Jika Anda belum memilikinya, Daftar untuk membuat akun baru.

  2. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  5. Menginstal Google Cloud CLI.
  6. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  7. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  8. Cloud Shell memiliki Terraform yang sudah terintegrasi. Jika Anda perlu menginstal Terraform, baca dokumentasi Terraform HashiCorp.

Membuat file konfigurasi Terraform

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

Selesaikan langkah-langkah berikut untuk membuat file konfigurasi Terraform 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 yang dapat menjadi tujuan pengiriman pesan oleh penerbit:

      # 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 cron job 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 pekerjaan.
      • schedule: frekuensi tugas, menggunakan format berdasarkan unix-cron.

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

      • region: region tempat pekerjaan 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, baca referensi argumen Terraform Registry.

Membuat cron job

Deploy resource Terraform Anda untuk membuat cron job.

  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 tentang tidak menggunakan opsi -out.

  3. Buat cron job:

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

  5. Konfirmasikan bahwa pekerjaan telah 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 mengeksekusi sesuai jadwal yang ditentukan, Anda dapat memaksa tugas untuk langsung dijalankan dengan menjalankan perintah berikut.

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

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

Memverifikasi hasilnya

Verifikasi bahwa topik Pub/Sub Anda menerima pesan dari tugas Anda.

  1. Mengambil 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 menjalankan tugas Anda. Output-nya akan terlihat seperti berikut:

    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 pada 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, setiap file di direktori beranda Cloud Shell Anda (misalnya, file Terraform) tetap ada di antara sesi.

    Menghapus project Google Cloud:

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

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

    terraform destroy

Langkah selanjutnya