Dapatkan akses ke 700+ lab dan kursus

Mengotomatiskan Deployment Infrastruktur Menggunakan Terraform

Lab 1 jam universal_currency_alt 5 Kredit show_chart Pengantar
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Dapatkan akses ke 700+ lab dan kursus

Ringkasan

Terraform berguna untuk membuat, mengubah, dan 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. Intinya, Anda akan men-deploy satu jaringan mode otomatis dengan sebuah aturan firewall dan dua instance VM, seperti yang terlihat dalam diagram ini:

Diagram konfigurasi Terraform

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 VM
  • 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.

  1. 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
  2. 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.
  3. 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.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. 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.
  7. 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 yang berisi daftar produk dan layanan Google Cloud, klik Navigation menu di kiri atas, atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu

Tugas 1. Menyiapkan Terraform dan Cloud Shell

Dalam tugas ini, Anda akan mengonfigurasi lingkungan Cloud Shell untuk menggunakan Terraform.

Menginstal Terraform

Terraform kini terintegrasi ke dalam Cloud Shell. Verifikasi versi yang terinstal.

  1. Di Konsol Google Cloud, klik Activate Cloud Shell (Ikon Activate Cloud Shell).
  2. Jika diminta, klik Continue.
  3. Untuk memastikan Terraform sudah terinstal, jalankan perintah berikut:
terraform --version

Output-nya akan terlihat seperti ini:

Terraform v1.5.7

Catatan: Jangan khawatir jika Anda menerima peringatan bahwa versi Terraform sudah tidak berlaku lagi, karena petunjuk lab akan tetap berfungsi dengan Terraform v1.5.7 dan yang lebih baru. Versi terbaru Terraform dapat didownload di situs Terraform. Terraform terdistribusi sebagai paket biner untuk semua platform dan arsitektur yang didukung, dan Cloud Shell menggunakan Linux 64-bit.

  1. Untuk membuat direktori bagi konfigurasi Terraform Anda, jalankan perintah berikut:
mkdir tfinfra
  1. Di Cloud Shell, klik Open editor (Ikon Cloud Shell Editor).

Catatan: Jika Anda melihat 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 pindah kembali ke tab editor kode. Pada waktu-waktu tertentu, Anda akan harus pindah kembali ke terminal Cloud Shell di lab ini.

  1. Pada panel kiri editor kode, luaskan folder tfinfra.

Lakukan inisialisasi Terraform

Terraform menggunakan arsitektur berbasis plugin untuk mendukung banyak infrastruktur dan penyedia layanan yang ada. Tiap "penyedia" adalah program biner yang terenkapsulasi sendiri dan didistribusikan secara terpisah dari Terraform. Lakukan inisialisasi Terraform dengan menetapkan Google sebagai penyedia.

  1. Untuk membuat file baru di dalam folder tfinfra, klik kanan pada folder tfinfra, lalu klik New File.
  2. Namai file baru ini provider.tf, lalu buka.
  3. Salin kode berikut ke provider.tf:
provider "google" {}
  1. Untuk menyimpan provider.tf, klik File > Save.

  2. Untuk menginisialisasi Terraform, jalankan perintah berikut ini:

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.

  1. Untuk membuat file baru di dalam tfinfra, klik kanan pada folder tfinfra, lalu klik New File.
  2. Namai file baru ini mynetwork.tf, lalu buka.
  3. Salin kode dasar berikut ini ke mynetwork.tf:
# Create the mynetwork network resource [RESOURCE_TYPE] "mynetwork" { name = [RESOURCE_NAME] # RESOURCE properties go here }

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, tapi tidak wajib untuk resource tertentu.

  1. 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 penyedia Google Cloud. Pelajari resource khusus ini lebih lanjut di dokumentasi Terraform.

  1. Di mynetwork.tf, ganti [RESOURCE_NAME] dengan "mynetwork" (dengan tanda petik).
  2. Tambahkan properti berikut ini ke mynetwork.tf:
auto_create_subnetworks = "true"

Pada dasarnya, jaringan mode otomatis akan membuat subnetwork di setiap region secara otomatis. Dengan begitu, setel auto_create_subnetworks ke true.

  1. Pastikan file mynetwork.tf terlihat seperti ini:
# Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" # RESOURCE properties go here auto_create_subnetworks = "true" }
  1. Untuk menyimpan mynetwork.tf, klik File > Save.

Konfigurasikan aturan firewall

Tentukan aturan firewall untuk mengizinkan traffic HTTP, SSH, RDP, dan ICMP pada mynetwork.

  1. Tambahkan kode dasar berikut ini ke mynetwork.tf:
# Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource [RESOURCE_TYPE] "mynetwork-allow-http-ssh-rdp-icmp" { name = [RESOURCE_NAME] # RESOURCE properties go here }
  1. Di mynetwork.tf, ganti [RESOURCE_TYPE] dengan "google_compute_firewall" (dengan tanda petik).

Catatan: Resource google_compute_firewall adalah aturan firewall. Pelajari resource khusus ini lebih lanjut di dokumentasi Terraform.

  1. Di mynetwork.tf, ganti [RESOURCE_NAME] dengan "mynetwork-allow-http-ssh-rdp-icmp" (dengan tanda petik).
  2. Tambahkan properti berikut ini ke mynetwork.tf:
network = google_compute_network.mynetwork.self_link

Catatan: Karena aturan firewall ini bergantung pada jaringan, referensi google_compute_network.mynetwork.self_link digunakan sebagai petunjuk bagi Terraform agar me-resolve resource ini dengan urutan yang benar. Dalam hal ini, jaringan dibuat sebelum aturan firewall.

  1. Tambahkan properti berikut ini ke mynetwork.tf:
allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } source_ranges = ["0.0.0.0/0"]

Isi aturan allow menentukan protokol dan port yang diperbolehkan.

  1. Pastikan file mynetwork.tf terlihat seperti ini:
# Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" # RESOURCE properties go here auto_create_subnetworks = "true" } # Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" { name = "mynetwork-allow-http-ssh-rdp-icmp" # RESOURCE properties go here network = google_compute_network.mynetwork.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } source_ranges = ["0.0.0.0/0"] }
  1. Untuk menyimpan mynetwork.tf, klik File > Save.

Konfigurasikan instance VM

Tentukan instance VM dengan membuat modul instance VM. Modul adalah konfigurasi yang bisa digunakan ulang di dalam sebuah folder. Modul ini akan digunakan untuk kedua instance VM di lab ini.

  1. Untuk membuat folder baru di dalam tfinfra, pilih folder tfinfra, lalu klik File > New Folder.
  2. Namai folder baru ini instance.
  3. Untuk membuat file baru di dalam instance, klik kanan pada folder instance, lalu klik New File.
  4. Namai file baru ini main.tf, lalu buka.

Struktur folder akan tampak seperti berikut ini di Cloud Shell:

Struktur folder

  1. Salin kode dasar berikut ke main.tf:
resource [RESOURCE_TYPE] "vm_instance" { name = [RESOURCE_NAME] # RESOURCE properties go here }
  1. Di main.tf, ganti [RESOURCE_TYPE] dengan "google_compute_instance" (dengan tanda petik).

Catatan: Resource google_compute_instance adalah instance Compute Engine. Pelajari resource khusus ini lebih lanjut di dokumentasi Terraform.

  1. Di main.tf, ganti [RESOURCE_NAME] dengan "${var.instance_name}" (dengan tanda petik).

Karena modul ini akan digunakan untuk kedua instance VM, tentukan nama instance sebagai variabel input. Fungsinya adalah untuk mengontrol nama variabel dari mynetwork.tf. Pelajari variabel input lebih lanjut di artikel panduan Terraform: Define Input Variables.

  1. 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.

  1. Tambahkan properti berikut ke main.tf:
boot_disk { initialize_params { image = "debian-cloud/debian-11" } }

Properti ini menentukan agar boot disk menggunakan OS image Debian 11. Karena kedua instance VM akan menggunakan image yang sama, properti ini dapat di-hard code dalam modul.

  1. Tambahkan properti berikut ke main.tf:
network_interface { network = "${var.instance_network}" access_config { # Allocate a one-to-one NAT IP to the 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.

  1. 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-11" } } network_interface { network = "${var.instance_network}" access_config { # Allocate a one-to-one NAT IP to the instance } } }
  1. Untuk menyimpan main.tf, klik File > Save.
  2. Untuk membuat file baru di dalam instance, klik kanan pada folder instance, lalu klik New File.
  3. Namai file baru ini variables.tf, lalu buka.
  4. 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 dan Anda akan menentukannya di mynetwork.tf.

  1. Untuk menyimpan variables.tf, klik File > Save.
  2. Tambahkan instance VM berikut ini ke mynetwork.tf:
# Create the mynet-vm-1 instance 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 } # Create the mynet-vm-2" instance 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. Karena instance ini bergantung pada jaringan VPC, referensi google_compute_network.mynetwork.self_link digunakan untuk memberi instruksi pada Terraform agar me-resolve resource itu dalam urutan yang benar. Dalam hal ini, jaringan dibuat sebelum instance.

Catatan: Modul Terraform bermanfaat karena dapat digunakan kembali pada banyak konfigurasi. Tanpa perlu membuat modul sendiri, Anda juga bisa menggunakan modul yang sudah ada dari registry Modul Terraform.

  1. Untuk menyimpan mynetwork.tf, klik File > Save.

  2. Pastikan mynetwork.tf terlihat seperti ini, termasuk tanda kurung {}

# Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" # RESOURCE properties go here auto_create_subnetworks = "true" } # Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" { name = "mynetwork-allow-http-ssh-rdp-icmp" # RESOURCE properties go here network = google_compute_network.mynetwork.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } source_ranges = ["0.0.0.0/0"] } # Create the mynet-vm-1 instance 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 } # Create the mynet-vm-2" instance 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

Langkah selanjutnya adalah menerapkan konfigurasi mynetwork.

  1. 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 masalah konfigurasi masih tidak bisa diatasi, download dan lihat konfigurasi yang sudah selesai ini:

  1. Untuk menginisialisasi Terraform, jalankan perintah berikut ini:
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 masalah konfigurasi masih tidak bisa diatasi, lihat konfigurasi yang sudah selesai di atas sebagai rujukan. Setelah masalah teratasi, jalankan kembali perintah sebelumnya.

  1. Untuk membuat rencana eksekusi, jalankan perintah berikut ini:
terraform plan

Output-nya akan terlihat seperti ini:

... Plan: 4 to add, 0 to change, 0 to destroy. ...

Terraform menentukan bahwa 4 resource berikut ini 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
  1. Untuk menerapkan perubahan yang diinginkan, jalankan perintah berikut:
terraform apply
  1. 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 masalah konfigurasi masih tidak bisa diatasi, 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.

Verifikasi jaringan Anda di Konsol Cloud

  1. Di Konsol Google Cloud, pada Navigation menu (Ikon Menu navigasi), klik VPC network > VPC networks.
  2. Lihat jaringan VPC mynetwork dengan subnetwork di setiap region.
  3. Di Navigation menu, klik VPC network > Firewall.
  4. Urutkan aturan firewall berdasarkan Network.
  5. Lihat aturan firewall mynetwork-allow-http-ssh-rdp-icmp untuk mynetwork.

Verifikasi instance VM Anda di Cloud Console

  1. Di Navigation menu (Ikon Navigation menu), klik Compute Engine > VM instances.
  2. Lihat instance mynet-vm-1 dan mynet-vm-2.
  3. Perhatikan alamat IP internal untuk mynet-vm-2.
  4. Untuk mynet-vm-1, klik SSH untuk meluncurkan terminal, lalu hubungkan.
  5. 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 tahap demi tahap.

Dengan modul instance, Anda dapat menggunakan kembali konfigurasi resource yang sama untuk banyak resources dan memberikan properti sebagai variabel input. Anda bisa memakai konfigurasi dan modul yang sudah dibuat sebagai titik awal deployment selanjutnya.

Mengakhiri lab Anda

Setelah Anda menyelesaikan lab, klik Akhiri Lab. Google Cloud Skills Boost 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 2020 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.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Gunakan jendela Samaran atau browser pribadi untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.