Tutorial ini menjelaskan cara mengelola aturan kualitas data Dataplex sebagai kode dengan Terraform, Cloud Build, dan GitHub.
Ada banyak opsi untuk aturan kualitas data yang tersedia untuk menentukan dan mengukur kualitas data Anda. Saat mengotomatiskan proses deployment aturan kualitas data sebagai bagian dari strategi pengelolaan infrastruktur yang lebih besar, Anda memastikan bahwa data Anda secara konsisten dan dapat diprediksi tunduk pada aturan yang Anda tetapkan.
Jika Anda memiliki versi set data yang berbeda untuk beberapa lingkungan, seperti
lingkungan dev
dan prod
, Terraform menyediakan cara yang andal untuk menetapkan aturan
kualitas data ke versi set data khusus lingkungan.
Kontrol versi juga merupakan praktik terbaik DevOps yang penting. Mengelola aturan kualitas data sebagai kode akan memberi Anda versi aturan kualitas data yang tersedia di histori GitHub. Terraform juga dapat menyimpan statusnya ke Cloud Storage, yang dapat menyimpan versi sebelumnya dari file status.
Untuk informasi selengkapnya tentang Terraform dan Cloud Build, lihat Ringkasan Terraform di Google Cloud dan Cloud Build.
Arsitektur
Untuk memahami cara tutorial ini menggunakan Cloud Build untuk mengelola
eksekusi Terraform, pertimbangkan diagram arsitektur berikut. Perhatikan bahwa metode ini menggunakan cabang GitHub—dev
dan prod
—untuk mewakili lingkungan yang sebenarnya.
Proses ini dimulai saat Anda mengirim kode Terraform ke cabang dev
atau prod
. Dalam skenario ini, Cloud Build akan memicu, lalu menerapkan manifes Terraform untuk mencapai status yang Anda inginkan di lingkungannya masing-masing.
Di sisi lain, saat Anda mengirim kode Terraform ke cabang lain—misalnya, ke cabang fitur—Cloud Build akan beroperasi untuk menjalankan terraform plan
, tetapi tidak ada yang diterapkan ke lingkungan apa pun.
Idealnya, developer atau operator harus membuat proposal infrastruktur ke cabang yang tidak dilindungi, lalu mengirimkannya melalui permintaan pull.
Aplikasi Cloud Build GitHub, yang akan dibahas dalam tutorial ini nanti, akan secara otomatis memicu tugas build dan menautkan laporan terraform plan
ke permintaan pull ini. Dengan cara ini, Anda dapat membahas dan meninjau potensi perubahan dengan kolaborator dan menambahkan commit tindak lanjut sebelum perubahan digabungkan ke cabang dasar.
Jika tidak ada masalah yang diajukan, Anda harus menggabungkan perubahan ke cabang
dev
terlebih dahulu. Penggabungan ini memicu deployment infrastruktur ke lingkungan dev
, sehingga Anda dapat menguji lingkungan ini. Setelah menguji dan yakin dengan apa yang di-deploy, Anda harus menggabungkan cabang dev
ke cabang prod
untuk memicu penginstalan infrastruktur ke lingkungan produksi.
Tujuan
- Menyiapkan repositori GitHub Anda.
- Konfigurasi Terraform untuk menyimpan status di bucket Cloud Storage.
- Berikan izin ke akun layanan Cloud Build Anda.
- Hubungkan Cloud Build ke repositori GitHub Anda.
- Menetapkan aturan kualitas data Dataplex.
- Ubah konfigurasi lingkungan Anda di cabang fitur dan uji.
- Dorong perubahan pada lingkungan pengembangan.
- Mendorong perubahan pada lingkungan produksi.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
- Di Cloud Shell, dapatkan ID project yang baru saja Anda pilih:
Jika perintah ini tidak menampilkan project ID, konfigurasikan Cloud Shell untuk menggunakan project Anda. Gantigcloud config get-value project
PROJECT_ID
dengan project ID Anda.gcloud config set project PROJECT_ID
- Aktifkan API yang diperlukan:
Langkah ini mungkin memerlukan waktu beberapa menit hingga selesai.gcloud services enable bigquery.googleapis.com cloudbuild.googleapis.com compute.googleapis.com dataplex.googleapis.com
- Jika Anda belum pernah menggunakan Git di Cloud Shell, konfigurasikan dengan nama dan alamat email Anda:
Git menggunakan informasi ini untuk mengidentifikasi Anda sebagai penulis commit yang Anda buat di Cloud Shell.git config --global user.email "YOUR_EMAIL_ADDRESS" git config --global user.name "YOUR_NAME"
Menyiapkan repositori GitHub Anda
Dalam tutorial ini, Anda menggunakan satu repositori Git untuk menentukan infrastruktur cloud. Anda mengorkestrasi infrastruktur ini dengan memiliki cabang yang berbeda yang sesuai dengan lingkungan yang berbeda:
- Cabang
dev
berisi perubahan terbaru yang diterapkan ke lingkungan pengembangan. - Cabang
prod
berisi perubahan terbaru yang diterapkan ke lingkungan produksi.
Dengan infrastruktur ini, Anda dapat mereferensikan repositori untuk mengetahui konfigurasi yang diharapkan di setiap lingkungan dan mengusulkan perubahan baru dengan menggabungkannya ke dalam lingkungan dev
terlebih dahulu. Selanjutnya, promosikan perubahan tersebut dengan
menggabungkan cabang dev
ke cabang prod
berikutnya.
Untuk memulai, buat fork repositori terraform-google-dataplex-auto-data-quality.
Di GitHub, buka https://github.com/GoogleCloudPlatform/terraform-google-dataplex-auto-data-quality.git.
Klik Fork.
Sekarang Anda memiliki salinan repositori
terraform-google-dataplex-auto-data-quality
dengan file sumber.Di Cloud Shell, clone repositori fork berikut:
cd ~ git clone https://github.com/GITHUB_USERNAME/terraform-google-dataplex-auto-data-quality.git cd ~/terraform-google-dataplex-auto-data-quality
Ganti kode berikut:
- GITHUB_USERNAME: nama pengguna GitHub Anda
Buat cabang
dev
danprod
:git checkout -b prod git checkout -b dev
Kode dalam repositori ini disusun sebagai berikut:
Folder
environments/
berisi subfolder yang merepresentasikan lingkungan, sepertidev
danprod
, yang masing-masing memberikan pemisahan logis antara workload pada berbagai tahap kematangan, pengembangan, dan produksi.Folder
modules/
berisi modul Terraform inline. Modul ini mewakili pengelompokan logis resource terkait dan digunakan untuk berbagi kode di berbagai lingkungan. Modulmodules/deploy/
di sini mewakili template untuk deployment dan digunakan kembali untuk berbagai lingkungan deployment.Dalam
modules/deploy/
:Folder
rule/
berisi fileyaml
yang berisi aturan kualitas data. Satu file mewakili kumpulan aturan kualitas data untuk satu tabel. File ini digunakan di lingkungandev
danprod
.Folder
schemas/
berisi skema tabel untuk tabel BigQuery yang di-deploy di infrastruktur ini.File
bigquery.tf
berisi konfigurasi untuk tabel BigQuery yang dibuat dalam deployment ini.File
dataplex.tf
berisi pemindaian data Dataplex untuk kualitas data. File ini digunakan bersama denganrules_file_parsing.tf
untuk membaca aturan kualitas data dari fileyaml
ke dalam lingkungan.
File
cloudbuild.yaml
adalah file konfigurasi build yang berisi petunjuk untuk Cloud Build, seperti cara menjalankan tugas berdasarkan serangkaian langkah. File ini menentukan eksekusi bersyarat yang bergantung pada cabang yang digunakan Cloud Build untuk mengambil kode, misalnya:Untuk cabang
dev
danprod
, langkah-langkah berikut dijalankan:terraform init
terraform plan
terraform apply
Untuk cabang lain, langkah-langkah berikut dijalankan:
terraform init
untuk semua subfolderenvironments
terraform plan
untuk semua subfolderenvironments
Untuk memastikan bahwa perubahan yang diusulkan sesuai untuk setiap lingkungan,
terraform init
dan terraform plan
dijalankan untuk semua lingkungan. Sebelum
menggabungkan permintaan pull, Anda dapat meninjau paket untuk memastikan bahwa akses
tidak diberikan kepada entitas yang tidak sah, misalnya.
Mengonfigurasi Terraform untuk menyimpan status di bucket Cloud Storage
Secara default, Terraform menyimpan status secara lokal dalam file bernama terraform.tfstate
. Konfigurasi default ini dapat
mempersulit penggunaan Terraform oleh tim, terutama ketika banyak pengguna menjalankan Terraform secara bersamaan dan setiap mesin memiliki pemahamannya sendiri tentang infrastruktur saat ini.
Untuk membantu Anda menghindari masalah tersebut, bagian ini mengonfigurasi status jarak jauh yang mengarah ke bucket Cloud Storage. Status jarak jauh adalah fitur
backends
dan, dalam tutorial ini, dikonfigurasi dalam file backend.tf
.
File backend.tf
terpisah ada di setiap lingkungan dev
dan prod
. Sebaiknya gunakan bucket Cloud Storage yang berbeda untuk setiap lingkungan.
Pada langkah-langkah berikut, Anda akan membuat dua bucket Cloud Storage untuk dev
dan prod
, serta mengubah beberapa file agar mengarah ke bucket baru dan project Google Cloud Anda.
Di Cloud Shell, buat dua bucket Cloud Storage:
DEV_BUCKET=gs://PROJECT_ID-tfstate-dev gcloud storage buckets create ${DEV_BUCKET} PROD_BUCKET=gs://PROJECT_ID-tfstate-prod gcloud storage buckets create ${PROD_BUCKET}
Untuk menyimpan histori deployment Anda, aktifkan Pembuatan Versi Objek:
gcloud storage buckets update ${DEV_BUCKET} --versioning gcloud storage buckets update ${PROD_BUCKET} --versioning
Mengaktifkan pembuatan versi objek akan meningkatkan biaya penyimpanan, yang dapat Anda kurangi dengan mengonfigurasi Object Lifecycle Management untuk menghapus versi status lama.
Di setiap lingkungan, dalam file
main.tf
danbackend.tf
, gantiPROJECT_ID
dengan project ID:cd ~/terraform-google-dataplex-auto-data-quality sed -i s/PROJECT_ID/PROJECT_ID/g environments/*/main.tf sed -i s/PROJECT_ID/PROJECT_ID/g environments/*/backend.tf
Di OS X atau macOS, Anda mungkin perlu menambahkan dua tanda kutip (
""
) setelahsed -i
, sebagai berikut:cd ~/solutions-terraform-cloudbuild-gitops sed -i "" s/PROJECT_ID/PROJECT_ID/g environments/*/main.tf sed -i "" s/PROJECT_ID/PROJECT_ID/g environments/*/backend.tf
Periksa apakah semua file telah diperbarui:
git status
Berikut adalah contoh output:
On branch dev Your branch is up-to-date with 'origin/dev'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: environments/dev/backend.tf modified: environments/dev/main.tf modified: environments/prod/backend.tf modified: environments/prod/main.tf no changes added to commit (use "git add" and/or "git commit -a")
Commit dan kirim perubahan Anda:
git add --all git commit -m "Update project IDs and buckets" git push origin dev
Bergantung pada konfigurasi GitHub Anda, Anda harus melakukan autentikasi untuk menerapkan perubahan sebelumnya.
Memberikan izin ke akun layanan Cloud Build Anda
Agar akun layanan Cloud Build dapat menjalankan skrip Terraform dengan tujuan mengelola resource Google Cloud, Anda perlu memberinya akses yang sesuai ke project Anda. Untuk mempermudah, akses editor project diberikan dalam tutorial ini. Namun, jika peran editor project memiliki izin yang luas, di lingkungan produksi, Anda harus mengikuti praktik terbaik keamanan IT perusahaan Anda, yang biasanya memberikan akses dengan hak istimewa terendah.
Di Cloud Shell, ambil email untuk akun layanan Cloud Build project Anda:
CLOUDBUILD_SA="$(gcloud projects describe $PROJECT_ID \ --format 'value(projectNumber)')@cloudbuild."
Berikan akses yang diperlukan ke akun layanan Cloud Build Anda:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$CLOUDBUILD_SA --role roles/editor
Menghubungkan Cloud Build langsung ke repositori GitHub Anda
Bagian ini menjelaskan cara menginstal aplikasi GitHub Cloud Build. Penginstalan ini memungkinkan Anda menghubungkan repositori GitHub dengan project Google Cloud, sehingga Cloud Build dapat diterapkan secara otomatis manifes Terraform setiap kali Anda membuat cabang baru atau mengirim kode ke GitHub.
Langkah-langkah berikut memberikan petunjuk penginstalan aplikasi hanya untuk
repositori terraform-google-dataplex-auto-data-quality
, tetapi Anda dapat memilih untuk
menginstal aplikasi ke lebih banyak atau semua repositori Anda.
Di GitHub Marketplace, buka halaman aplikasi Cloud Build.
- Jika ini pertama kalinya Anda mengonfigurasi aplikasi di GitHub, klik Setup with Google Cloud Build di bagian bawah halaman, lalu klik Grant this app access to your GitHub account.
- Jika ini bukan pertama kalinya mengonfigurasi aplikasi di GitHub: Klik Configure access. Halaman Applications pada akun pribadi Anda akan terbuka.
Klik Configure di baris Cloud Build.
Pilih Only select repository, lalu pilih
terraform-google-dataplex-auto-data-quality
untuk terhubung ke repositori.Klik Save atau Install—label tombol akan berubah bergantung pada alur kerja Anda. Anda sekarang dialihkan ke Google Cloud untuk melanjutkan penginstalan.
Login dengan akun Google Cloud Anda. Jika diminta, izinkan integrasi Cloud Build dengan GitHub.
Di halaman Cloud Build, pilih project Anda. Wizard akan muncul.
Di bagian Select repository, pilih akun GitHub Anda dan repositori
terraform-google-dataplex-auto-data-quality
.Jika Anda menyetujui persyaratan dan ketentuan ini, pilih kotak centang, lalu klik Connect.
Di bagian Create a trigger, klik Create a trigger:
- Tambahkan nama pemicu, seperti
push-to-branch
. Catat nama pemicu ini karena Anda akan membutuhkannya nanti. - Di bagian Event, pilih Push to a branch.
- Di bagian Source, pilih
.*
di kolom Branch. - Klik Create.
- Tambahkan nama pemicu, seperti
Aplikasi GitHub Cloud Build dikonfigurasi, dan repositori GitHub Anda ditautkan ke project Google Cloud Anda. Perubahan pada repositori GitHub akan memicu eksekusi Cloud Build, yang melaporkan hasilnya kembali ke GitHub menggunakan Pemeriksaan GitHub.
Mengubah konfigurasi lingkungan Anda di cabang fitur baru
Sebagian besar lingkungan Anda telah dikonfigurasi. Buat perubahan kode yang diperlukan di lingkungan lokal Anda:
Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.
https://github.com/YOUR_GITHUB_USERNAME/terraform-google-dataplex-auto-data-quality
Pastikan Anda berada di cabang
dev
.Untuk membuka file yang akan diedit, buka file
modules/deploy/dataplex.tf
.Pada baris 19, ubah label
the_environment
menjadienvironment
.Tambahkan pesan commit di bagian bawah halaman, seperti "mengubah label", lalu pilih Create a new branch for this commit and start a pull request.
Klik Propose changes.
Pada halaman berikutnya, klik Create pull request untuk membuka permintaan pull baru dengan perubahan Anda pada cabang
dev
.Setelah permintaan pull Anda terbuka, tugas Cloud Build akan dimulai secara otomatis.
Klik Show all checks dan tunggu hingga centang berwarna hijau. Jangan gabungkan permintaan pull Anda. Penggabungan dilakukan di langkah selanjutnya dalam tutorial ini.
Klik Details untuk melihat informasi selengkapnya, termasuk output
terraform plan
di link View more details on Google Cloud Build.
Perhatikan bahwa tugas Cloud Build menjalankan pipeline yang ditentukan dalam file cloudbuild.yaml
. Pipeline ini memiliki perilaku yang berbeda bergantung pada
cabang yang diambil. Build akan memeriksa apakah
variabel $BRANCH_NAME
cocok dengan folder lingkungan mana pun. Jika demikian, Cloud Build akan menjalankan terraform plan
untuk lingkungan tersebut.
Jika tidak, Cloud Build akan mengeksekusi terraform plan
untuk semua lingkungan guna memastikan perubahan yang diusulkan sesuai untuk semua lingkungan. Jika salah satu
rencana ini gagal dijalankan, build akan gagal.
Demikian pula, perintah terraform apply
yang akan berjalan untuk cabang lingkungan, tetapi
sepenuhnya diabaikan dalam kasus lainnya. Di bagian ini, Anda telah mengirimkan perubahan kode ke cabang baru, sehingga tidak ada deployment infrastruktur yang diterapkan ke project Google Cloud Anda.
Menerapkan keberhasilan eksekusi Cloud Build sebelum menggabungkan cabang
Untuk memastikan penggabungan hanya dapat diterapkan jika setiap eksekusi Cloud Build berhasil, ikuti langkah-langkah berikut:
Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.
https://github.com/YOUR_GITHUB_USERNAME/terraform-google-dataplex-auto-data-quality
Di bagian nama repositori Anda, klik Setelan.
Di menu sebelah kiri, klik Branches.
Pada bagian Branch protection rules, klik Add rule.
Di Branch name pattern, ketik
dev
.Di bagian Protect matching branches, pilih Require status checks to pass before merging.
Telusuri nama pemicu Cloud Build yang telah Anda buat sebelumnya.
Klik Create.
Ulangi langkah 3–7, tetapkan Branch name pattern ke
prod
.
Konfigurasi ini penting untuk
melindungi
cabang dev
dan prod
. Artinya, commit harus terlebih dahulu didorong ke cabang lain, dan baru setelah itu dapat digabungkan ke cabang yang dilindungi. Dalam tutorial ini, perlindungan mengharuskan eksekusi Cloud Build berhasil agar penggabungan diizinkan.
Mendorong perubahan pada lingkungan pengembangan
Anda memiliki permintaan pull yang menunggu untuk digabungkan. Kini saatnya menerapkan status
yang Anda inginkan ke lingkungan dev
.
Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.
https://github.com/YOUR_GITHUB_USERNAME/terraform-google-dataplex-auto-data-quality
Di bagian nama repositori Anda, klik Pull requests.
Klik permintaan pull yang baru saja dibuat.
Klik Merge pull request, lalu klik Confirm merge.
Periksa apakah Cloud Build baru telah dipicu:
Buka build dan periksa log. Tindakan ini akan menampilkan semua resource yang dibuat dan dikelola Terraform.
Mendorong perubahan pada lingkungan produksi
Setelah lingkungan pengembangan sudah diuji sepenuhnya, Anda dapat mempromosikan kode untuk aturan kualitas data ke produksi.
Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.
https://github.com/YOUR_GITHUB_USERNAME/terraform-google-dataplex-auto-data-quality
Di bagian nama repositori Anda, klik Pull requests.
Klik New pull request.
Untuk base repository, pilih repositori yang baru saja diambil.
Untuk base, pilih
prod
dari repositori dasar Anda sendiri. Untuk compare, pilihdev
.Klik Create pull request.
Untuk title, masukkan judul seperti
Changing label name
, lalu klik Create pull request.Tinjau perubahan yang diusulkan, termasuk detail
terraform plan
dari Cloud Build, lalu klik Merge pull request.Klik Confirm merge.
Di konsol Google Cloud, buka halaman Build History untuk melihat perubahan yang Anda terapkan ke lingkungan produksi:
Anda telah berhasil mengonfigurasi aturan kualitas data yang dikelola menggunakan Terraform dan Cloud Build.
Pembersihan
Setelah menyelesaikan tutorial, bersihkan resource yang dibuat di Google Cloud sehingga Anda tidak akan ditagih di masa mendatang.
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus repositori GitHub
Untuk menghindari pemblokiran permintaan pull baru di repositori GitHub, Anda dapat menghapus aturan perlindungan cabang:
- Di GitHub, buka halaman utama repositori Anda yang di-fork.
- Di bagian nama repositori Anda, klik Setelan.
- Di menu sebelah kiri, klik Branches.
- Di bagian Branch protection rules, klik tombol Delete untuk baris
dev
danprod
.
Secara opsional, Anda dapat meng-uninstal aplikasi Cloud Build sepenuhnya dari GitHub:
Di GitHub, buka halaman Aplikasi GitHub.
Di tab Installed GitHub Apps, klik Configure di baris Cloud Build. Kemudian, di bagian Danger zone, klik tombol Uninstall di baris Uninstall Google Cloud Builder.
Di bagian atas halaman, Anda akan melihat pesan yang menyatakan "You're all set. A job has been queued to uninstall Google Cloud Build."
Di tab Authorized GitHub Apps, klik tombol Revoke di baris Google Cloud Build, lalu I understand, revoke access.
Jika Anda tidak ingin menyimpan repositori GitHub, hapus repositori tersebut:
- Di GitHub, buka halaman utama repositori Anda yang di-fork.
- Di bagian nama repositori Anda, klik Setelan.
- Buka Danger Zone.
- Klik Delete this repository, dan ikuti langkah konfirmasi.
Langkah selanjutnya
- Pelajari kualitas data otomatis.
- Pelajari lebih lanjut DevOps dan praktik terbaik DevOps.
- Jelajahi Cloud Foundation Toolkit untuk template Terraform lainnya.