Menjadwalkan dan menjalankan cron job menggunakan Terraform
Panduan memulai ini menunjukkan cara menggunakan Terraform untuk membuat cron job 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 penggunaan 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, buka Harga.
Dalam panduan memulai ini, Anda akan:
- Gunakan Terraform untuk membuat cron job untuk Cloud Scheduler.
- Tetapkan jadwal berulang untuk tugas.
- Menentukan topik Pub/Sub sebagai target tugas.
- Menjalankan tugas.
- Pastikan tugas telah berhasil dijalankan.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Jika Anda menggunakan project yang sudah ada untuk panduan ini, pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini. Jika berhasil membuat project baru, berarti Anda sudah memiliki izin yang diperlukan.
Aktifkan Resource Manager dan Service Usage API, jika belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable cloudresourcemanager.googleapis.com
serviceusage.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Jika Anda menggunakan project yang sudah ada untuk panduan ini, pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini. Jika berhasil membuat project baru, berarti Anda sudah memiliki izin yang diperlukan.
Aktifkan Resource Manager dan Service Usage API, jika belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable cloudresourcemanager.googleapis.com
serviceusage.googleapis.com - Cloud Shell sudah mengintegrasikan Terraform. Jika Anda perlu menginstal Terraform, lihat dokumentasi HashiCorp Terraform.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai cepat ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- Admin Cloud Scheduler (
roles/cloudscheduler.admin) - Editor Pub/Sub (
roles/pubsub.editor)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
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:
Buka terminal dan buat direktori:
mkdir terraformBuka direktori
terraform:cd terraform
Tambahkan file baru,
main.tf, ke direktori:nano main.tfTambahkan resource penyedia Terraform untuk Google Cloud berikut ke file
main.tf:Aktifkan Cloud Scheduler dan Pub/Sub API:
Buat topik Pub/Sub sebagai resource yang dapat menerima pesan dari penayang:
Tindakan ini akan membuat topik bernama
pubsub_topic.Buat langganan untuk menerima pesan yang dipublikasikan ke topik Pub/Sub:
Buat cron job menggunakan resource
google_cloud_scheduler_job:Argumen berikut digunakan dalam contoh:
name: nama tugas.description: deskripsi tugas.schedule: frekuensi untuk tugas, menggunakan format berdasarkan unix-cron.Dalam contoh ini,
30 16 * * 7berarti 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.
Untuk contoh lain penggunaan Terraform dengan Cloud Scheduler, lihat Menjalankan layanan Cloud Run sesuai jadwal.
Buat cron job
Deploy resource Terraform Anda untuk membuat cron job.
Buka terminal dan di direktori
terraform, lakukan inisialisasi Terraform:terraform initPeriksa apakah perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:
terraform planAnda dapat mengabaikan catatan terkait tidak menggunakan opsi
-out.Buat cron job:
terraform applyPada prompt Enter a value, ketik
yesuntuk melanjutkan pembuatan resource.Pastikan tugas telah dibuat:
gcloud scheduler jobs describe test-job --location=us-east1
Outputnya akan mirip dengan berikut ini:
description: test job lastAttemptTime: '2024-04-04T13:56:00.669530Z' name: projects/PROJECT_ID/locations/us-east1/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-east1
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.
Mengambil pesan Pub/Sub dari langganan:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5Jika tidak ada pesan yang ditarik pada awalnya, jalankan kembali perintah tersebut.
Melihat 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 akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, hapus project Google Cloud yang berisi resource tersebut.
- Menghapus project Google Cloud akan menghentikan penagihan untuk semua
resource yang digunakan dalam project tersebut. Perlu diperhatikan bahwa secara default, semua file di direktori beranda Cloud Shell Anda (misalnya, file Terraform) akan tetap ada di antara sesi.
Menghapus project Google Cloud :
gcloud projects delete PROJECT_ID
Atau, Anda dapat menghapus semua resource yang Anda buat dengan Terraform.
Perintah
terraform destroymenghentikan semua resource yang ditentukan dalam status Terraform Anda. Perintah ini tidak menghancurkan resource yang tidak dikelola oleh project Terraform saat ini. File konfigurasi Terraform Anda tidak akan dihancurkan. Untuk mengetahui informasi selengkapnya, lihat Hancurkan infrastruktur.terraform destroy