Panduan ini bertujuan untuk menjelaskan cara Terraform berinteraksi dengan Google Cloud API (sekaligus membedakan antara API publik dan pribadi), serta menjelaskan konsep utama seperti pengaktifan API dan impor resource. Pemahaman ini sangat penting untuk mengelola resource secara efektif dengan Terraform dan menghindari kesalahan umum. Google Cloud
API publik versus pribadi Google Cloud
LayananGoogle Cloud mengekspos berbagai API yang memungkinkan aplikasi dan alat (seperti Terraform) berinteraksi dengan dan mengelola resource. API ini secara umum dikelompokkan ke dalam dua kategori:
API Publik
Tujuan: Ini adalah antarmuka utama bagi pelanggan dan alat untuk membuat, mengonfigurasi, dan mengelola Google Cloud resource (misalnya, Instance Compute Engine, bucket Cloud Storage, set data BigQuery).
Eksposur: API publik didokumentasikan dengan baik, memiliki endpoint REST yang ditentukan, dan ditujukan untuk penggunaan eksternal. API ini adalah API yang dibuat untuk berinteraksi dengan penyedia Terraform google
.
Contoh: compute.googleapis.com
, storage.googleapis.com
, bigquery.googleapis.com
.
API pribadi (internal)
Tujuan: API ini bersifat internal untuk layanan Google Cloud , digunakan oleh Google sendiri untuk operasi, orkestrasi, dan penyediaan layanan terkelolanya secara internal. Mereka mengekspos fungsi yang tidak dimaksudkan untuk interaksi atau pengelolaan pelanggan secara langsung.
Eksposur: API pribadi umumnya tidak didokumentasikan secara publik, tidak memiliki endpoint eksternal yang stabil, dan tidak dirancang untuk akses langsung oleh alat pihak ketiga seperti Terraform. Ini adalah detail implementasi layanan.
Contoh: dataproc-control.googleapis.com
adalah API internal yang digunakan Dataproc untuk bidang kontrol operasionalnya. Pelanggan tidak berinteraksi langsung dengan atau mengelola API ini.
Pengaktifan API versus Impor Resource di Terraform
Memahami perbedaan antara "mengaktifkan API" dan "mengimpor resource" sangat penting untuk menggunakan Terraform secara efektif dengan Google Cloud.
Mengaktifkan API
- Artinya: Saat Anda "mengaktifkan API" di Google Cloud, Anda mengaktifkan layanan Google Cloud tertentu untuk project Anda. Hal ini memberi project Anda izin dan akses yang diperlukan untuk menggunakan fungsi layanan tersebut dan membuat resource yang dikelola olehnya.
Konteks Terraform: Di Terraform, hal ini biasanya dilakukan menggunakan resource google_project_service
. Resource ini memverifikasi bahwa API publik tertentu (misalnya, compute.googleapis.com
) diaktifkan untuk project Google Cloud Anda.
Tujuan: Mengaktifkan API adalah prasyarat untuk membuat atau mengelola resource yang termasuk dalam layanan tersebut. Misalnya, Anda harus mengaktifkan compute.googleapis.com
sebelum dapat membuat resource google_compute_instance
.
Contoh (Terraform):
```hcl
resource "google_project_service" "compute_api" {
project = "your-gcp-project-id"
service = "compute.googleapis.com"
disable_on_destroy = false
}
```
Catatan Penting: Resource google_project_service
dirancang secara eksklusif untuk mengelola status pengaktifan API yang dapat diakses secara publik Google Cloud . API ini tidak ditujukan untuk, dan tidak akan berfungsi dengan, API internal atau pribadi. Mencoba menggunakannya untuk API pribadi akan menghasilkan error, karena API tersebut tidak diekspos melalui permukaan API publik untuk pengelolaan tersebut.
Mengimpor Resource
Artinya: Di Terraform, "mengimpor" mengacu pada membawa resource cloud yang sudah ada (yang dibuat secara manual atau oleh proses lain di luar Terraform) ke dalam pengelolaan Terraform. Saat Anda mengimpor resource, Terraform akan membuat entri status untuk resource tersebut, sehingga Anda dapat mengelola siklus prosesnya (pembaruan, penghapusan) menggunakan konfigurasi Terraform.
Konteks Terraform: Hal ini dicapai menggunakan perintah terraform import
, atau dengan memanfaatkan blok import
yang diperkenalkan di Terraform 1.5+.
Tujuan: Untuk mendapatkan kontrol atas resource yang awalnya tidak disediakan oleh Terraform.
Contoh (Terraform CLI):
```bash
terraform import google_compute_instance.my_instance projects/your-gcp-project-id/zones/us-central1-a/instances/my-vm
```
Menangani Kekhawatiran tentang API Pribadi (misalnya, dataproc-control.googleapis.com
)
Pelanggan terkadang menemukan referensi ke API pribadi (seperti
dataproc-control.googleapis.com
untuk Dataproc) dalam log atau dokumentasi dan
bertanya-tanya apakah mereka perlu mengaktifkan atau mengimpornya dengan Terraform.
Tidak Perlu Tindakan Pelanggan: Jika API diidentifikasi sebagai API pribadi atau
internal Google Cloud , Anda tidak perlu mengaktifkannya secara eksplisit menggunakan
google_project_service
atau mencoba mengimpornya dengan Terraform.
Pengelolaan Internal: API ini sangat penting untuk operasi internal layananGoogle Cloud . API ini dikelola secara otomatis oleh Google dan tidak dirancang untuk interaksi atau pengelolaan langsung pelanggan melalui alat publik.
Tidak Ada Dampak pada Penggunaan Layanan: Ketidakmampuan Anda untuk "mengimpor" atau mengelola API pribadi tersebut secara eksplisit menggunakan Terraform tidak akan memengaruhi kemampuan Anda untuk menggunakan layanan terkait (misalnya, Google Cloud Dataproc akan berfungsi dengan benar tanpa Anda mengelola dataproc-control.googleapis.com
). Interaksi API internal yang diperlukan ditangani oleh Google.
Berfokus pada API Publik: Saat mengelola resource Google Cloud dengan Terraform, Anda hanya perlu berfokus pada pengaktifan dan konfigurasi API publik yang sesuai dengan layanan dan resource yang ingin Anda sediakan.
Kesimpulan
Dengan memahami perbedaan yang jelas antara API publik dan pribadi, serta peran khusus API "mengaktifkan" versus "mengimpor" resource di Terraform, Anda dapat mengelola infrastruktur secara efektif. Jangan mencoba mengelola atau mengimpor API pribadi secara eksplisit; API tersebut adalah komponen internal yang ditangani oleh Google. Google CloudGoogle Cloud Google Cloud Fokuskan konfigurasi Terraform Anda pada API yang diekspos secara publik dan resource yang sesuai.