Ringkasan
Terraform memungkinkan Anda membuat, mengubah, serta meningkatkan kualitas infrastruktur dengan aman dan terprediksi. Terraform adalah alat open source yang mengodifikasi API menjadi file konfigurasi deklaratif yang bisa dibagikan kepada anggota tim, diperlakukan sebagai kode, diedit, ditinjau, dan dibuatkan versi.
Di lab ini, Anda akan membuat konfigurasi Terraform dengan modul untuk mengotomatiskan deployment infrastruktur Google Cloud. Secara khusus, Anda men-deploy satu jaringan mode otomatis dengan aturan firewall dan dua instance, seperti yang terlihat pada diagram ini:

Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Membuat konfigurasi untuk jaringan mode otomatis
- Membuat konfigurasi untuk aturan firewall
- Membuat modul untuk instance
- Membuat dan men-deploy konfigurasi
- Memverifikasi deployment konfigurasi
Penyiapan
Untuk setiap lab, Anda akan memperoleh project Google Cloud baru serta serangkaian resource selama jangka waktu tertentu, tanpa biaya.
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri adalah panel Lab Details yang memuat sebagai berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk melihat menu dengan daftar produk dan layanan Google Cloud, klik Navigation menu di kiri atas.
Tugas 1. Menyiapkan Terraform dan Cloud Shell
Dalam tugas ini, Anda akan mengonfigurasi lingkungan Cloud Shell untuk menggunakan Terraform.
Mengaktifkan Google Cloud Shell
Google Cloud Shell adalah virtual machine yang dilengkapi dengan berbagai fitur pengembangan. Virtual machine ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud.
Google Cloud Shell menyediakan akses command line untuk resource Google Cloud Anda.
-
Di Cloud Console, pada toolbar di kanan atas, klik tombol Open Cloud Shell.

-
Klik Continue.
Proses menyediakan dan menghubungkan ke lingkungan memerlukan waktu beberapa saat. Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Contoh:

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
Output:
Akun berkredensial:
- @.com (aktif)
Contoh output:
Akun berkredensial:
- google1623327_student@qwiklabs.net
- Anda dapat menampilkan daftar project ID dengan perintah ini:
gcloud config list project
Output:
[core]
project =
Contoh output:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Catatan:
Dokumentasi lengkap gcloud tersedia dalam
panduan ringkasan gcloud CLI
.
Menginstal Terraform
Terraform tidak diinstal sebelumnya di Cloud Shell. Anda harus menginstal Terraform CLI dan mengonfigurasinya agar tetap ada di seluruh sesi Cloud Shell.
- Untuk mengonfigurasi repositori HashiCorp dan menginstal Terraform, serta memastikan penginstalan ini tetap ada di sesi mendatang, jalankan perintah berikut di terminal Cloud Shell:
cat <<'EOF' > ~/.customize_environment
# Siapkan repositori HashiCorp dan instal Terraform
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install -y terraform
EOF
bash ~/.customize_environment
- Untuk memverifikasi bahwa Terraform telah diinstal dengan benar, jalankan:
terraform --version
Output akan menampilkan versi yang diinstal (v1.5.7 atau yang lebih baru):
Terraform v1.9.0
Membuat file konfigurasi
Setelah menginstal Terraform, buat direktori dan file untuk konfigurasi Terraform Anda.
- Untuk membuat direktori bagi konfigurasi Terraform Anda, jalankan perintah berikut:
mkdir tfinfra
- Di Cloud Shell, klik Open Editor (
).
Catatan: Jika muncul pesan "Unable to load code editor because third-party cookies are disabled", klik Open in New Window. Editor kode akan terbuka di tab baru. Kembali ke tab awal, klik Open Terminal, lalu beralih kembali ke tab editor kode. Anda perlu beralih kembali ke terminal Cloud Shell di lab ini secara berkala.
- Di panel kiri editor kode, luaskan folder tfinfra.
Melakukan inisialisasi Terraform
Terraform menggunakan arsitektur berbasis plugin untuk mendukung banyak provider layanan dan infrastruktur yang ada. Setiap "provider" merupakan program biner yang terenkapsulasi sendiri yang didistribusikan secara terpisah dari Terraform. Lakukan inisialisasi Terraform dengan menetapkan Google sebagai provider.
- Untuk membuat file baru di dalam folder tfinfra,
right-click pada folder tfinfra, lalu klik New File.
- Beri nama file baru ini provider.tf, lalu buka file tersebut.
- Salin kode berikut ke
provider.tf:
provider "google" {}
-
Untuk menyimpan provider.tf, klik File > Save.
-
Untuk melakukan inisialisasi Terraform, jalankan perintah berikut:
cd tfinfra
terraform init
Sekarang Anda bisa mulai menggunakan Terraform di Cloud Shell.
Tugas 2. Membuat mynetwork beserta resource-nya
Dalam tugas ini, Anda akan membuat jaringan mode otomatis mynetwork beserta aturan firewall dan dua instance VM-nya (mynet_vm_1 dan mynet_vm_2).
Mengonfigurasi mynetwork
Buat konfigurasi baru, dan tentukan mynetwork.
- Untuk membuat file baru di dalam tfinfra,
right-click pada folder tfinfra, lalu klik New File.
- Beri nama file baru ini mynetwork.tf, lalu buka file tersebut.
- Salin kode dasar berikut ke
mynetwork.tf:
# Buat jaringan mynetwork
resource [RESOURCE_TYPE] "mynetwork" {
name = [RESOURCE_NAME]
# Properti RESOURCE disimpan di sini
}
Template dasar ini merupakan titik awal yang tepat untuk semua resource Google Cloud. Kolom name berfungsi untuk memberi nama resource, dan kolom type berfungsi untuk menentukan resource Google Cloud yang ingin dibuat. Anda juga bisa menentukan properti, tetapi tidak wajib untuk resource tertentu.
- Di
mynetwork.tf, ganti [RESOURCE_TYPE] dengan "google_compute_network" (dengan tanda petik).
Catatan: Resource google_compute_network adalah jaringan VPC. Resource yang tersedia dapat ditemukan di dokumentasi provider Google Cloud. Pelajari lebih lanjut resource khusus ini di dokumentasi Terraform.
- Di
mynetwork.tf, ganti [RESOURCE_NAME] dengan "mynetwork" (dengan tanda petik).
- Tambahkan properti berikut ke
mynetwork.tf:
auto_create_subnetworks = true
Pada dasarnya, jaringan mode otomatis akan membuat subnetwork di setiap region secara otomatis. Oleh karena itu, Anda perlu mengatur auto_create_subnetworks ke true.
- Pastikan file mynetwork.tf terlihat seperti ini:
# Buat jaringan mynetwork
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
# Properti RESOURCE disimpan di sini
auto_create_subnetworks = true
}
- Untuk menyimpan
mynetwork.tf, klik File > Save.
Mengonfigurasi aturan firewall
Tentukan aturan firewall untuk mengizinkan traffic HTTP, SSH, RDP, dan ICMP pada mynetwork.
- Tambahkan kode dasar berikut ke
mynetwork.tf:
# Tambahkan aturan firewall untuk mengizinkan traffic HTTP, SSH, RDP, dan ICMP pada mynetwork
resource [RESOURCE_TYPE] "mynetwork-allow-http-ssh-rdp-icmp" {
name = [RESOURCE_NAME]
# Properti RESOURCE disimpan di sini
}
- Di
mynetwork.tf, ganti [RESOURCE_TYPE] dengan "google_compute_firewall" (dengan tanda petik).
Catatan: Resource google_compute_firewall adalah aturan firewall. Pelajari lebih lanjut resource khusus ini di dokumentasi Terraform.
- Di
mynetwork.tf, ganti [RESOURCE_NAME] dengan "mynetwork-allow-http-ssh-rdp-icmp" (dengan tanda petik).
- Tambahkan properti berikut ke
mynetwork.tf:
network = google_compute_network.mynetwork.self_link
Catatan: Aturan firewall ini bergantung pada jaringannya, sehingga Anda perlu menggunakan referensi google_compute_network.mynetwork.self_link untuk memberi petunjuk kepada Terraform agar me-resolve resource ini dalam urutan yang benar. Dalam hal ini, jaringan dibuat sebelum aturan firewall.
- Tambahkan properti berikut ke
mynetwork.tf:
allow {
protocol = "tcp"
ports = ["22", "80", "3389"]
}
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
Daftar aturan allow menentukan protokol dan port yang diperbolehkan.
- Pastikan file
mynetwork.tf Anda terlihat seperti ini:
# Buat jaringan mynetwork
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
# Properti RESOURCE disimpan di sini
auto_create_subnetworks = "true"
}
# Tambahkan aturan firewall untuk mengizinkan traffic HTTP, SSH, RDP, dan ICMP pada mynetwork
resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" {
name = "mynetwork-allow-http-ssh-rdp-icmp"
# Properti RESOURCE disimpan di sini
network = google_compute_network.mynetwork.self_link
allow {
protocol = "tcp"
ports = ["22", "80", "3389"]
}
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
}
- Untuk menyimpan mynetwork.tf, klik File > Save.
Mengonfigurasi instance VM
Tentukan instance VM dengan membuat modul instance VM. Modul adalah konfigurasi yang bisa digunakan kembali di dalam sebuah folder. Modul ini akan digunakan untuk kedua instance VM di lab ini.
- Untuk membuat folder baru di dalam tfinfra, pilih folder tfinfra, lalu klik File > New Folder.
- Beri nama folder baru ini instance.
- Untuk membuat file baru di dalam instance,
right-click pada folder instance, lalu klik New File.
- Beri nama file baru ini main.tf, lalu buka file tersebut.
Struktur folder akan tampak seperti berikut ini di Cloud Shell:

- Salin kode dasar berikut ke main.tf:
resource [RESOURCE_TYPE] "vm_instance" {
name = [RESOURCE_NAME]
# Properti RESOURCE disimpan di sini
}
- Di
main.tf, ganti [RESOURCE_TYPE] dengan "google_compute_instance" (dengan tanda petik).
Catatan: Resource google_compute_instance adalah instance Compute Engine. Pelajari lebih lanjut resource khusus ini di dokumentasi Terraform.
- Di
main.tf, ganti [RESOURCE_NAME] dengan "${var.instance_name}" (dengan tanda petik).
Modul ini akan digunakan untuk kedua instance VM, sehingga Anda perlu menentukan nama instance sebagai variabel input. Hal ini memungkinkan Anda mengontrol nama variabel dari mynetwork.tf. Pelajari lebih lanjut variabel input di artikel Panduan Terraform: Define Input Variables.
- Tambahkan properti berikut ke
main.tf:
zone = "${var.instance_zone}"
machine_type = "${var.instance_type}"
Properti ini menentukan zona dan jenis mesin instance sebagai variabel input.
- Tambahkan properti berikut ke
main.tf:
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
Properti ini menentukan boot disk agar menggunakan OS image Debian 12. Kedua instance VM akan menggunakan image yang sama, sehingga Anda dapat menjalankan hard code pada properti ini dalam modul.
- Tambahkan properti berikut ke
main.tf:
network_interface {
network = "${var.instance_network}"
access_config {
# Alokasikan NAT one-to-one ke instance
}
}
Properti ini menentukan antarmuka jaringan dengan memberikan nama jaringan sebagai variabel input dan konfigurasi akses. Jika konfigurasi akses tidak diisi, alamat IP eksternal akan bersifat sementara (diperlukan di lab ini). Untuk membuat instance dengan hanya satu alamat IP internal, hapus bagian access_config. Untuk mengetahui informasi selengkapnya, baca dokumentasi Terraform.
- Pastikan
main.tf terlihat seperti ini, termasuk tanda kurung {}
resource "google_compute_instance" "vm_instance" {
name = "${var.instance_name}"
zone = "${var.instance_zone}"
machine_type = "${var.instance_type}"
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
network = "${var.instance_network}"
access_config {
# Alokasikan NAT one-to-one ke instance
}
}
}
- Untuk menyimpan main.tf, klik File > Save.
- Untuk membuat file baru di dalam instance,
right-click pada folder instance, lalu klik New File.
- Beri nama file baru ini variables.tf, lalu buka file tersebut.
- Tentukan 4 variabel input di
variables.tf.
variable "instance_name" {}
variable "instance_zone" {}
variable "instance_type" {
default = "e2-micro"
}
variable "instance_network" {}
Dengan memberi nilai default pada instance_type, variabel ini menjadi opsional. instance_name, instance_zone, dan instance_network wajib diisi. Anda akan menentukannya di mynetwork.tf.
- Untuk menyimpan variables.tf, klik File > Save.
- Tambahkan instance VM berikut ke
mynetwork.tf:
# Buat instance mynet-vm-1
module "mynet-vm-1" {
source = "./instance"
instance_name = "mynet-vm-1"
instance_zone = "{{{project_0.default_zone|Zone}}}"
instance_network = google_compute_network.mynetwork.self_link
}
# Buat instance mynet-vm-2"
module "mynet-vm-2" {
source = "./instance"
instance_name = "mynet-vm-2"
instance_zone = "{{{project_0.default_zone_2|Zone 2}}}"
instance_network = google_compute_network.mynetwork.self_link
}
Resource ini memanfaatkan modul dalam folder instance serta memberikan nama, zona, dan jaringan sebagai input. Instance ini bergantung pada jaringan VPC, sehingga Anda perlu menggunakan referensi google_compute_network.mynetwork.self_link untuk memberi petunjuk kepada Terraform agar me-resolve resource ini dalam urutan yang benar. Dalam hal ini, jaringan dibuat sebelum instance.
Catatan: Modul Terraform bermanfaat karena dapat digunakan kembali pada banyak konfigurasi. Alih-alih membuat modul sendiri, Anda juga bisa menggunakan modul yang sudah ada dari Terraform Module registry.
-
Untuk menyimpan mynetwork.tf, klik File > Save.
-
Pastikan mynetwork.tf terlihat seperti ini, termasuk tanda kurung {}
# Buat jaringan mynetwork
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
# Properti RESOURCE disimpan di sini
auto_create_subnetworks = "true"
}
# Tambahkan aturan firewall untuk mengizinkan traffic HTTP, SSH, RDP, dan ICMP pada mynetwork
resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" {
name = "mynetwork-allow-http-ssh-rdp-icmp"
# Properti RESOURCE disimpan di sini
network = google_compute_network.mynetwork.self_link
allow {
protocol = "tcp"
ports = ["22", "80", "3389"]
}
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
}
# Buat instance mynet-vm-1
module "mynet-vm-1" {
source = "./instance"
instance_name = "mynet-vm-1"
instance_zone = "{{{project_0.default_zone|Zone}}}"
instance_network = google_compute_network.mynetwork.self_link
}
# Buat instance mynet-vm-2"
module "mynet-vm-2" {
source = "./instance"
instance_name = "mynet-vm-2"
instance_zone = "{{{project_0.default_zone_2|Zone 2}}}"
instance_network = google_compute_network.mynetwork.self_link
}
Membuat mynetwork beserta resource-nya
Sekarang saatnya menerapkan konfigurasi mynetwork.
- Untuk menulis ulang file konfigurasi Terraform dengan format dan gaya kanonis, jalankan perintah berikut:
terraform fmt
Output-nya akan terlihat seperti ini:
mynetwork.tf
Catatan: Jika terjadi error, pastikan langkah-langkah sebelumnya telah dijalankan dengan tepat agar konfigurasi Anda sesuai dengan petunjuk lab. Jika Anda tidak bisa memecahkan masalah konfigurasi, download dan lihat konfigurasi yang sudah selesai ini:
- Untuk melakukan inisialisasi Terraform, jalankan perintah berikut:
terraform init
Output-nya akan terlihat seperti ini:
Initializing modules...
- mynet-vm-2 in instance
- mynet-vm-2 in instance
...
Terraform has been successfully initialized!
Catatan: Jika error terjadi, pastikan langkah-langkah sebelumnya telah dijalankan dengan tepat sehingga struktur folder/file sudah benar. Jika Anda tidak bisa memecahkan masalah konfigurasi, lihat konfigurasi yang sudah selesai di atas sebagai rujukan. Setelah masalah teratasi, jalankan kembali perintah sebelumnya.
- Untuk membuat rencana eksekusi, jalankan perintah berikut:
terraform plan
Output-nya akan terlihat seperti ini:
...
Plan: 4 to add, 0 to change, 0 to destroy.
...
Terraform menentukan bahwa 4 resource berikut harus ditambahkan:
| Nama |
Deskripsi |
| mynetwork |
Jaringan VPC |
| mynetwork-allow-http-ssh-rdp-icmp |
Aturan firewall untuk mengizinkan HTTP, SSH, RDP, dan ICMP |
| mynet-vm-2 |
Instance VM di
|
| mynet-vm-2 |
Instance VM di
|
- Untuk menerapkan perubahan yang diinginkan, jalankan perintah berikut:
terraform apply
- Untuk mengonfirmasi rencana tindakan, ketik:
yes
Output-nya akan terlihat seperti ini:
...
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
Klik Check my progress untuk memverifikasi tujuan.
Membuat mynetwork beserta resource-nya
Catatan: Jika terjadi error saat proses eksekusi, pastikan langkah-langkah sebelumnya telah dijalankan dengan tepat sehingga struktur folder/file sudah benar. Jika Anda tidak bisa memecahkan masalah konfigurasi, lihat konfigurasi yang sudah selesai di atas sebagai rujukan. Setelah masalah teratasi, jalankan kembali perintah sebelumnya.
Tugas 3. Memverifikasi deployment Anda
Di Konsol Google Cloud, pastikan resource sudah dibuat.
Memverifikasi jaringan Virtual Private Cloud (VPC) Anda di Konsol Google Cloud
- Di Konsol Google Cloud, pada Navigation menu (
), klik VPC network > VPC networks.
- Lihat jaringan VPC mynetwork dengan subnetwork di setiap region.
- Di Navigation menu, klik VPC network > Firewall.
- Urutkan aturan firewall berdasarkan Network.
- Lihat aturan firewall mynetwork-allow-http-ssh-rdp-icmp untuk mynetwork.
Memverifikasi instance VM Anda di Konsol Cloud
- Di Navigation menu (
), klik Compute Engine > VM instances.
- Lihat instance mynet-vm-1 dan mynet-vm-2.
- Perhatikan alamat IP internal untuk mynet-vm-2.
- Untuk mynet-vm-1, klik SSH guna meluncurkan terminal, lalu hubungkan.
- Untuk menguji konektivitas ke alamat IP internal mynet-vm-2, jalankan perintah berikut di terminal SSH (mengganti alamat IP internal mynet-vm-2 dengan nilai yang dicatat sebelumnya):
ping -c 3 <Masukkan IP internal mynet-vm-2 di sini>
Catatan: Perintah ini seharusnya berfungsi karena kedua instance VM berada di jaringan yang sama, dan aturan firewall mengizinkan traffic ICMP.
Tugas 4. Tinjauan
Di lab ini, Anda membuat konfigurasi Terraform dengan modul untuk mengotomatiskan deployment infrastruktur Google Cloud. Seiring perubahan konfigurasi Anda, Terraform bisa membuat rencana eksekusi tambahan sehingga Anda dapat membangun konfigurasi keseluruhan langkah demi langkah.
Dengan modul instance, Anda dapat menggunakan kembali konfigurasi resource yang sama untuk beberapa resource dan memberikan properti sebagai variabel input. Anda bisa menggunakan konfigurasi dan modul yang sudah dibuat sebagai titik awal deployment selanjutnya.
Mengakhiri lab Anda
Setelah Anda menyelesaikan lab, klik Akhiri Lab. Google Skills menghapus resource yang telah Anda gunakan dan membersihkan akun.
Anda akan diberi kesempatan untuk menilai pengalaman menggunakan lab. Pilih jumlah bintang yang sesuai, ketik komentar, lalu klik Submit.
Makna jumlah bintang:
- 1 bintang = Sangat tidak puas
- 2 bintang = Tidak puas
- 3 bintang = Netral
- 4 bintang = Puas
- 5 bintang = Sangat puas
Anda dapat menutup kotak dialog jika tidak ingin memberikan masukan.
Untuk masukan, saran, atau koreksi, gunakan tab Support.
Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.