Menjadwalkan dan menjalankan cron job 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 kualitas 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. Gunakan Terraform untuk membuat tugas cron untuk Cloud Scheduler.
  2. Tetapkan jadwal berulang untuk tugas.
  3. Tentukan topik Pub/Sub sebagai target tugas.
  4. Menjalankan tugas.
  5. Pastikan tugas telah berhasil dijalankan.

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. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. 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 the resourcemanager.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.

  6. Install the Google Cloud CLI.

  7. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  8. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  9. 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 the resourcemanager.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.

  10. Cloud Shell telah mengintegrasikan Terraform. Jika Anda perlu menginstal Terraform, lihat dokumentasi HashiCorp Terraform.
  11. 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 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 menerima pesan dari penerbit:

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

        Tindakan ini akan membuat topik bernama 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 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 cron job 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 Terraform Registry.

    Buat cron job

    Deploy resource Terraform Anda untuk membuat cron job.

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

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

      terraform plan

      Anda dapat mengabaikan catatan terkait tidak menggunakan opsi -out.

    3. Buat cron job:

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

    5. Konfirmasi bahwa tugas 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 setiap hari Minggu. Sekarang Anda dapat menjalankan tugas.

    Menjalankan tugas

    Selain dieksekusi sesuai jadwal yang ditentukan, Anda dapat memaksa tugas untuk segera dieksekusi 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. Mengambil pesan Pub/Sub dari langganan:

      gcloud pubsub subscriptions pull pubsub_subscription --limit 5
      

      Jika tidak ada pesan yang ditarik 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 di halaman ini, hapus project Google Cloud yang berisi resource tersebut.

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

      Delete a Google Cloud project:

      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 Anda. Tidak menghancurkan resource yang tidak dikelola oleh project Terraform saat ini. File konfigurasi Terraform Anda tidak dihancurkan. Untuk mengetahui informasi selengkapnya, lihat Hancurkan infrastruktur.

      terraform destroy

    Langkah berikutnya