Memuat…
Tidak ditemukan hasil.

Terapkan keterampilan Anda di Konsol Google Cloud

Dapatkan akses ke 700+ lab dan kursus

Infrastructure as Code dengan Terraform

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

Lab ini dikembangkan bersama partner kami, HashiCorp. Informasi pribadi Anda mungkin akan dibagikan kepada Hashicorp, sponsor lab ini, jika Anda memilih opsi untuk menerima info terbaru terkait produk, pengumuman, dan penawaran di Profil Akun Anda.

GSP750

Logo lab mandiri Google Cloud

Ringkasan

Terraform adalah penawaran Infrastructure as Code dari HashiCorp. Alat ini memiliki fungsi untuk membangun, mengubah, dan mengelola infrastruktur secara aman dan berulang. Tim infrastruktur dan operator dapat menggunakan Terraform untuk mengelola lingkungan dengan bahasa konfigurasi bernama Hashicorp Configuration Language (HCL) untuk melakukan deployment otomatis yang dapat dibaca manusia.

Infrastructure as Code adalah proses pengelolaan infrastruktur dalam satu atau beberapa file, sehingga tidak memerlukan konfigurasi resource secara manual dalam suatu antarmuka pengguna. Resource dalam instance ini adalah infrastruktur apa pun di suatu lingkungan, seperti virtual machine, grup keamanan, antarmuka jaringan, dll. Pada tingkat tinggi, Terraform memungkinkan operator menggunakan HCL untuk membuat file yang berisi definisi resource yang diinginkan pada hampir semua penyedia (AWS, Google Cloud, GitHub, Docker, dll.) dan mengotomatiskan pembuatan resource tersebut pada saat penerapan.

Alur kerja sederhana untuk melakukan deployment sangat ketat berdasarkan langkah-langkah berikut:

  • Scope - Konfirmasi resource yang perlu dibuat dalam suatu project.
  • Author - Buat file konfigurasi dalam HCL berdasarkan cakupan parameter.
  • Initialize - Jalankan terraform init di direktori project dengan file konfigurasi. Tindakan ini mendownload plugin penyedia yang sesuai untuk project.
  • Plan & Apply - Jalankan terraform plan untuk memverifikasi proses pembuatan, kemudian terraform apply untuk membuat resource yang sesungguhnya beserta file state yang membandingkan perubahan mendatang di file konfigurasi dengan apa yang sebenarnya ada di lingkungan deployment.

Tujuan

Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:

  • Membangun, mengubah, dan menghancurkan infrastruktur dengan Terraform.
  • Membuat Dependensi Resource dengan Terraform.
  • Menyediakan infrastruktur dengan Terraform.

Penyiapan dan persyaratan

Sebelum mengklik tombol Start Lab

Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.

Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
  • Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran. Di sebelah kiri ada panel Lab Details yang berisi hal-hal 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 mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu dan kolom Search

Mengaktifkan Cloud Shell

Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas Konsol Google Cloud.

  2. Klik jendela berikut:

    • Lanjutkan melalui jendela informasi Cloud Shell.
    • Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.

Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:

Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project

Output:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Tugas 1. Membangun infrastruktur

Terraform sudah terinstal di Cloud Shell. Dengan Terraform yang sudah terinstal, Anda dapat langsung mengaksesnya dan membuat beberapa infrastruktur.

Mulai dengan membuat konfigurasi contoh ke file bernama main.tf. Terraform mengenali file berakhiran .tf atau .tf.json sebagai file konfigurasi dan memuatnya saat dijalankan.

  1. Buat file main.tf:
touch main.tf
  1. Klik tombol Open Editor di toolbar Cloud Shell. (Anda dapat beralih antara Cloud Shell dan editor kode menggunakan ikon Open Editor dan Open Terminal sesuai keperluan, atau klik tombol Open in new window agar Editor tetap terbuka di tab terpisah).

  2. Di Editor, tambahkan konten berikut ke file main.tf.

terraform { required_providers { google = { source = "hashicorp/google" version = "3.5.0" } } } provider "google" { project = "{{{project_0.project_id | PROJECT ID}}}" region = "{{{project_0.default_region | REGION}}}" zone = "{{{project_0.default_zone | ZONE}}}" } resource "google_compute_network" "vpc_network" { name = "terraform-network" } Catatan: Untuk menggunakan cuplikan ini dengan Terraform 0.12, hapus blok terraform {}.

Blok Terraform

Blok terraform {} diperlukan agar Terraform tahu penyedia yang harus didownload dari Terraform Registry. Pada konfigurasi di atas, sumber penyedia google didefinisikan sebagai hashicorp/google yang merupakan singkatan dari registry.terraform.io/hashicorp/google.

Anda juga dapat menetapkan suatu versi ke setiap penyedia yang ditentukan di blok required_providers. Argumen version bersifat opsional, tetapi direkomendasikan. Argumen ini digunakan untuk membatasi penyedia agar hanya menggunakan versi tertentu atau serangkaian versi untuk mencegah download penyedia baru yang mungkin berisi perubahan yang dapat menyebabkan gangguan. Jika versinya tidak ditentukan, Terraform akan otomatis mendownload penyedia terbaru selama inisialisasi.

Untuk mempelajarinya lebih lanjut, di situs HashiCorp Terraform, lihat Provider Requirements.

Penyedia

Blok provider digunakan untuk mengonfigurasi penyedia yang ditentukan, dalam kasus ini google. Penyedia bertanggung jawab membuat dan mengelola resource. Beberapa blok penyedia dapat disertakan jika konfigurasi Terraform mengelola resource dari penyedia lain.

Inisialisasi

Perintah pertama yang dijalankan untuk konfigurasi baru -(atau setelah memeriksa konfigurasi yang ada dari kontrol versi) adalah terraform init, yang menginisialisasi berbagai data dan setelan lokal yang digunakan oleh perintah berikutnya.

  • Lakukan inisialisasi konfigurasi Terraform baru dengan menjalankan perintah terraform init di direktori yang sama dengan direktori file main.tf:
terraform init

Membuat resource

  1. Terapkan konfigurasi Anda sekarang dengan menjalankan perintah terraform apply:
terraform apply

Outputnya memiliki tanda + di samping resource "google_compute_network" "vpc_network", yang berarti Terraform akan membuat resource ini. Selain itu, outputnya menampilkan atribut yang akan ditetapkan. Jika nilai tidak diketahui sebelum resource dibuat, (known after apply) akan muncul.

Jika rencana berhasil dibuat, Terraform sekarang akan menjeda dan menunggu persetujuan sebelum melanjutkan. Jika ada yang terlihat salah atau berbahaya dalam rencana, Anda dapat membatalkan proses sekarang tanpa mengubah infrastruktur.

Jika terraform apply gagal dengan menampilkan error, baca pesan error dan perbaiki error yang terjadi.

  1. Rencana ini tampak dapat diterima sejauh ini, jadi ketikkan yes pada prompt konfirmasi, lalu tekan ENTER untuk melanjutkan.

Eksekusi rencana perlu waktu beberapa menit karena Terraform menunggu jaringan berhasil dibuat:

# ... Enter a value: yes google_compute_network.vpc_network: Creating... google_compute_network.vpc_network: Still creating... [10s elapsed] google_compute_network.vpc_network: Still creating... [20s elapsed] google_compute_network.vpc_network: Still creating... [30s elapsed] google_compute_network.vpc_network: Still creating... [40s elapsed] google_compute_network.vpc_network: Still creating... [50s elapsed] google_compute_network.vpc_network: Creation complete after 58s [id=terraform-network] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Setelah itu, semua proses di Terraform selesai. Anda dapat membuka Konsol Cloud untuk melihat jaringan yang telah dibuat.

  1. Di Konsol Google Cloud, dari Navigation menu, buka VPC network. Anda akan melihat terraform-network.

Halaman jaringan VPC

  1. Di Cloud Shell, jalankan perintah terraform show untuk memeriksa status saat ini:
terraform show

Nilai ini dapat dijadikan referensi untuk mengonfigurasi resource atau output lain, yang akan dibahas nanti di lab ini.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat resource di Terraform

Tugas 2. Mengubah infrastruktur

Di bagian sebelumnya, Anda membuat infrastruktur dasar dengan Terraform: jaringan VPC. Di bagian ini, Anda akan memodifikasi konfigurasi, dan melihat cara Terraform menangani perubahan.

Infrastruktur terus berkembang, dan Terraform dibangun untuk membantu mengelola dan menerapkan perubahan tersebut. Saat Anda mengubah konfigurasi Terraform, Terraform membuat rencana eksekusi yang hanya menerapkan perubahan seperlunya untuk mencapai status yang Anda inginkan.

Dengan menggunakan Terraform untuk mengubah infrastruktur, Anda tidak dapat mengontrol versi tidak hanya konfigurasi, tetapi juga statusnya sehingga dapat melihat perkembangan infrastruktur seiring waktu.

Menambahkan resource

Anda dapat menambahkan resource baru ke konfigurasi Terraform dan menjalankan terraform apply untuk menyediakan resource tersebut.

  1. Di Editor, tambahkan resource instance komputasi ke main.tf:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-12" } } network_interface { network = google_compute_network.vpc_network.name access_config { } } }

Resource ini mencakup beberapa argumen tambahan. Nama dan jenis mesin merupakan string sederhana, tetapi boot_disk dan network_interface merupakan blok yang lebih kompleks. Anda dapat melihat semua opsi yang tersedia di dokumentasi google_compute_instance.

Untuk contoh ini, instance komputasi Anda akan menggunakan sistem operasi Debian, dan akan terhubung ke Jaringan VPC yang Anda buat sebelumnya. Perhatikan bahwa konfigurasi ini menggunakan google_compute_network.vpc_network.name untuk merujuk properti nama jaringan, dengan google_compute_network.vpc_network merupakan ID yang sama dengan nilai dalam blok yang mendefinisikan jaringan, dan name merupakan properti resource tersebut.

Keberadaan blok access_config, sekalipun tanpa argumen, memastikan bahwa instance tersebut dapat diakses melalui internet.

  1. Sekarang jalankan terraform apply untuk membuat instance komputasi:
terraform apply
  1. Sekali lagi, jawab yes pada prompt konfirmasi.

Perubahan ini cukup mudah. Anda menambahkan resource "google_compute_instance" bernama "vm_instance" ke konfigurasi Anda, dan Terraform membuat resource tersebut di Google Cloud.

Mengaktifkan Gemini Code Assist di Cloud Shell IDE

Anda dapat menggunakan Gemini Code Assist di lingkungan pengembangan terintegrasi (IDE) seperti Cloud Shell untuk menerima panduan tentang kode atau menyelesaikan masalah dengan kode Anda. Sebelum mulai menggunakan Gemini Code Assist, Anda perlu mengaktifkannya.

  1. Di Cloud Shell, aktifkan Gemini for Google Cloud API dengan perintah berikut:
gcloud services enable cloudaicompanion.googleapis.com
  1. Klik Open Editor di toolbar Cloud Shell.
Catatan: Untuk membuka Cloud Shell Editor, klik Open Editor di toolbar Cloud Shell. Anda dapat beralih antara Cloud Shell dan Editor kode dengan mengklik Open Editor atau Open Terminal, sesuai kebutuhan.
  1. Di panel kiri, klik ikon Settings, lalu di tampilan Settings, cari Gemini Code Assist.

  2. Temukan dan pastikan kotak centang dipilih untuk Geminicodeassist: Enable, lalu tutup Settings.

  3. Klik Cloud Code - No Project di status bar di bagian bawah layar.

  4. Berikan otorisasi pada plugin seperti yang ditunjukkan. Jika project tidak dipilih secara otomatis, klik Select a Google Cloud Project, lalu pilih .

  5. Pastikan project Google Cloud Anda () ditampilkan dalam pesan status Cloud Code di status bar.

Mengubah resource dengan bantuan Gemini Code Assist

Selain membuat resource, Terraform juga dapat melakukan perubahan pada resource tersebut.

Untuk membantu Anda menjadi lebih produktif sekaligus meminimalkan pengalihan konteks, Gemini Code Assist menyediakan tindakan cerdas berteknologi AI langsung di editor kode. Di bagian ini, Anda memutuskan menggunakan Gemini Code Assist untuk membantu Anda memodifikasi beberapa resource dengan Terraform.

Anda ingin menambahkan argumen tags ke resource vm_instance di file konfigurasi main.tf.

  1. Klik ikon Gemini Code Assist: Smart Actions Gemini Code Assist di toolbar.

  2. Tempel perintah berikut ke kolom teks bagian dari Gemini Code Assist yang terbuka dari toolbar.

Di file konfigurasi "main.tf", perbarui resource "vm_instance" dengan menambahkan argumen "tags". Tetapkan nilai ke ["web", "dev"].
  1. Untuk meminta Gemini mengubah kode, tekan ENTER.

  2. Saat diminta di tampilan Gemini Diff, klik Accept.

  3. Argumen tags yang ditambahkan dalam resource vm_instance di file konfigurasi main.tf sekarang terlihat seperti ini:

resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" tags = ["web", "dev"] # ... }
  1. Jalankan terraform apply lagi untuk mengupdate instance:
terraform apply
  1. Awalan ~ berarti Terraform mengupdate resource tersebut. Anda dapat menerapkan perubahan ini dengan merespons yes, dan Terraform akan menambahkan tag ke instance Anda.

Klik Periksa progres saya untuk memverifikasi tujuan. Mengubah infrastruktur

Membuat perubahan destruktif

Perubahan destruktif adalah perubahan yang mengharuskan penyedia mengganti resource yang ada, bukan memperbaruinya. Hal ini biasanya terjadi karena penyedia cloud tidak mendukung update resource dengan cara yang dijelaskan dalam konfigurasi Anda.

Perubahan disk image pada instance adalah salah satu contoh perubahan destruktif. Di bagian ini, Anda akan mengedit blok boot_disk dalam resource vm_instance di file konfigurasi main.tf dengan bantuan Gemini Code Assist: Smart Actions.

  1. Klik Open Editor untuk kembali ke Editor Cloud Shell, lalu klik ikon Gemini Code Assist: Smart Actions Gemini Code Assist: Smart Actions di toolbar.

  2. Tempel perintah berikut ke kotak teks bagian dari Gemini Code Assist yang terbuka dari toolbar:

Di file konfigurasi "main.tf", ubah image di blok boot_disk dalam resource "vm_instance" menjadi "cos-cloud/cos-stable".
  1. Tekan ENTER untuk mengubah image di resource vm_instance.

  2. Saat diminta di tampilan Gemini Diff, klik Accept.

  3. Blok boot_disk dalam resource vm_instance di file konfigurasi main.tf sekarang akan terlihat seperti ini:

boot_disk { initialize_params { image = "cos-cloud/cos-stable" } }
  1. Sekarang jalankan terraform apply lagi untuk melihat penerapan perubahan ini oleh Terraform ke resource yang ada:
terraform apply

Awalan -/+ berarti Terraform akan menghancurkan dan membuat ulang resource, bukan mengupdatenya. Meskipun beberapa atribut dapat langsung diupdate (yang ditunjukkan dengan awalan ~), perubahan boot disk image untuk suatu instance memerlukan pembuatan ulang instance yang bersangkutan. Terraform dan penyedia Google Cloud menangani detail ini untuk Anda, dan rencana eksekusi memperjelas tindakan yang akan dilakukan Terraform.

Selain itu, rencana eksekusi menunjukkan bahwa perubahan disk image adalah hal yang mengharuskan penggantian instance. Dengan informasi ini, Anda dapat menyesuaikan perubahan agar sebisa mungkin menghindari update yang melibatkan penghancuran dan pembuatan ulang instance jika proses ini tidak sesuai kebutuhan dalam beberapa situasi.

  1. Sekali lagi, Terraform meminta persetujuan rencana eksekusi sebelum melanjutkan. Jawab yes untuk menjalankan langkah-langkah yang direncanakan.

Sesuai dengan rencana eksekusi, Terraform pertama-tama menghancurkan instance yang ada, lalu membuat instance baru sebagai pengganti. Anda dapat menggunakan terraform show lagi untuk melihat nilai baru yang terkait dengan instance ini.

Menghancurkan infrastruktur

Kini Anda telah melihat cara membangun dan mengubah infrastruktur. Sebelum berlanjut ke pembuatan beberapa resource dan menampilkan dependensi resource, Anda akan melihat cara sepenuhnya menghancurkan infrastruktur yang dikelola Terraform.

Penghancuran infrastruktur adalah peristiwa yang jarang terjadi di lingkungan produksi. Namun, jika Anda menggunakan Terraform untuk menjalankan beberapa lingkungan seperti pengembangan, pengujian, dan staging, penghancuran sering kali merupakan tindakan yang berguna.

Resource dapat dihancurkan menggunakan perintah terraform destroy, yang mirip dengan terraform apply tetapi berperilaku seolah-olah semua resource telah dihapus dari konfigurasi.

  • Coba perintah terraform destroy. Jawab yes saat diminta untuk menjalankan rencana ini dan menghancurkan infrastruktur:
terraform destroy

Awalan - menunjukkan bahwa instance dan jaringan akan dihancurkan. Seperti perintah apply, Terraform memperlihatkan rencana eksekusi dan menunggu persetujuan sebelum menerapkan perubahan apa pun.

Sama seperti terraform apply, Terraform menentukan urutan hal-hal yang harus dihancurkan. Google Cloud tidak akan mengizinkan jaringan VPC dihapus jika masih berisi resource, jadi Terraform menunggu hingga instance ini dihancurkan sebelum menghancurkan jaringan. Saat melakukan operasi, Terraform membuat grafik dependensi untuk menentukan urutan operasi yang benar. Dalam kasus yang lebih rumit dengan beberapa resource, Terraform akan melakukan operasi secara paralel jika kondisinya aman.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat perubahan destruktif

Tugas 3. Membuat dependensi resource

Di bagian ini, Anda akan mempelajari selengkapnya tentang dependensi resource dan cara menggunakan parameter resource untuk berbagi informasi tentang satu resource dengan resource lain.

Infrastruktur dunia nyata memiliki beragam resource dan jenis resource. Konfigurasi Terraform dapat berisi banyak resource dan beberapa jenis resource, dan jenis-jenis tersebut bahkan dapat mencakup beberapa penyedia.

Di bagian ini, Anda akan melihat contoh dasar tentang cara mengonfigurasi beberapa resource dan cara menggunakan atribut resource untuk mengonfigurasi resource lain.

  • Jalankan perintah berikut untuk membuat ulang jaringan dan instance Anda:
terraform apply

Setelah Anda merespons prompt dengan yes, resource akan dibuat.

Menetapkan alamat IP statis

  1. Sekarang jalankan perintah berikut untuk menambahkan IP statis ke konfigurasi Anda dan menetapkan IP statis ke instance VM di main.tf:
resource "google_compute_address" "vm_static_ip" { name = "terraform-static-ip" }

Hal ini mirip dengan contoh sebelumnya untuk menambahkan resource instance VM, tetapi kali ini Anda membuat jenis resource "google_compute_address". Jenis resource ini mengalokasikan alamat IP yang dicadangkan ke project Anda.

  1. Selanjutnya, jalankan terraform plan:
terraform plan

Anda dapat melihat apa yang akan dibuat dengan terraform plan:

$ terraform plan Refreshing Terraform state in-memory prior to plan... The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. google_compute_network.vpc_network: Refreshing state... [id=terraform-network] google_compute_instance.vm_instance: Refreshing state... [id=terraform-instance] ------------------------------------------------------------------------ An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_address.vm_static_ip will be created + resource "google_compute_address" "vm_static_ip" { + address = (known after apply) + address_type = "EXTERNAL" + creation_timestamp = (known after apply) + id = (known after apply) + name = "terraform-static-ip" + network_tier = (known after apply) + project = (known after apply) + region = (known after apply) + self_link = (known after apply) + subnetwork = (known after apply) + users = (known after apply) } Plan: 1 to add, 0 to change, 0 to destroy. ------------------------------------------------------------------------ Catatan: Anda tidak menentukan parameter "-out" untuk menyimpan rencana ini, sehingga Terraform tidak dapat menjamin bahwa tindakan-tindakan ini akan dilakukan jika "terraform apply" dijalankan setelahnya.

Tidak seperti terraform apply, perintah plan hanya akan menunjukkan apa yang akan diubah, dan tidak akan pernah benar-benar langsung menerapkan perubahan tersebut. Perhatikan bahwa satu-satunya perubahan yang Anda lakukan sejauh ini adalah menambahkan IP statis. Selanjutnya, Anda perlu melampirkan alamat IP ke instance Anda.

  1. Update konfigurasi network_interface untuk instance Anda seperti berikut:
network_interface { network = google_compute_network.vpc_network.self_link access_config { nat_ip = google_compute_address.vm_static_ip.address } }

Blok access_config memiliki beberapa argumen opsional dan, dalam kasus ini, Anda akan menjadikan nat_ip sebagai alamat IP statisnya. Ketika membaca konfigurasi ini, Terraform akan:

  • Memastikan vm_static_ip dibuat sebelum vm_instance
  • Menyimpan properti vm_static_ip dalam status tersebut
  • Menetapkan nat_ip ke nilai properti vm_static_ip.address
  1. Jalankan terraform plan lagi, tetapi kali ini simpan rencananya:
terraform plan -out static_ip

Penyimpanan rencana dengan cara ini memastikan Anda dapat menerapkan rencana yang sama persis di masa mendatang. Jika Anda mencoba menerapkan file yang dibuat berdasarkan rencana, Terraform akan memeriksanya terlebih dahulu untuk memastikan rangkaian perubahan yang sama persis akan dilakukan sebelum rencana diterapkan.

Dalam hal ini, Anda dapat melihat bahwa Terraform akan membuat google_compute_address baru dan mengupdate VM yang ada untuk menggunakannya.

  1. Jalankan terraform apply "static_ip" untuk melihat rencana Terraform menerapkan perubahan ini:
terraform apply "static_ip"

Seperti yang ditunjukkan di atas, Terraform membuat IP statis sebelum memodifikasi instance VM. Karena ekspresi interpolasi yang meneruskan alamat IP ke konfigurasi antarmuka jaringan instance, Terraform dapat menyimpulkan dependensi, dan mengetahui bahwa Terraform harus membuat IP statis sebelum memperbarui instance.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat dependensi resource

Mempelajari dependensi implisit dan eksplisit

Dengan mempelajari atribut resource yang digunakan dalam ekspresi interpolasi, Terraform dapat menyimpulkan secara otomatis ketergantungan suatu resource pada resource lain. Dalam contoh di atas, penyebutan google_compute_address.vm_static_ip.address membuat implicit dependency di google_compute_address bernama vm_static_ip.

Terraform menggunakan informasi dependensi ini untuk menentukan urutan yang benar dalam membuat dan mengupdate berbagai resource. Dalam contoh di atas, Terraform tahu bahwa vm_static_ip harus dibuat sebelum vm_instance diupdate untuk menggunakannya.

Dependensi implisit melalui ekspresi interpolasi adalah cara utama untuk memberi tahu Terraform tentang hubungan ini, dan harus digunakan sebisa mungkin.

Terkadang ada dependensi antara resource yang tidak terlihat oleh Terraform. Argumen depends_on dapat ditambahkan ke resource apa pun dan menerima daftar resource yang dibuatkan dependensi eksplisitnya.

Misalnya, aplikasi yang dijalankan di instance Anda mungkin akan menggunakan suatu bucket Cloud Storage, tetapi dependensi tersebut dikonfigurasi di dalam kode aplikasi sehingga tidak terlihat oleh Terraform. Dalam kasus tersebut, Anda dapat menggunakan depends_on untuk mendeklarasikan dependensi secara eksplisit.

  1. Tambahkan bucket Cloud Storage dan suatu instance dengan dependensi eksplisit pada bucket tersebut dengan menambahkan kode berikut ke main.tf:
# New resource for the storage bucket our application will use. resource "google_storage_bucket" "example_bucket" { name = "<UNIQUE-BUCKET-NAME>" location = "US" website { main_page_suffix = "index.html" not_found_page = "404.html" } } # Create a new instance that uses the bucket resource "google_compute_instance" "another_instance" { # Tells Terraform that this VM instance must be created only after the # storage bucket has been created. depends_on = [google_storage_bucket.example_bucket] name = "terraform-instance-2" machine_type = "e2-micro" boot_disk { initialize_params { image = "cos-cloud/cos-stable" } } network_interface { network = google_compute_network.vpc_network.self_link access_config { } } } Catatan: Bucket penyimpanan harus unik secara global. Karena hal ini, Anda harus mengganti UNIQUE-BUCKET-NAME dengan nama unik yang valid untuk suatu bucket. Penggunaan nama Anda dan tanggal biasanya merupakan cara yang bagus untuk menebak nama bucket yang unik.

Anda mungkin bertanya-tanya harus disimpan di mana resource ini dalam konfigurasi Anda. Urutan penentuan resource dalam file konfigurasi terraform tidak berpengaruh pada cara Terraform menerapkan perubahan Anda. Atur file konfigurasi Anda dengan cara yang paling sesuai bagi Anda dan tim Anda.

  1. Sekarang jalankan terraform plan dan terraform apply untuk melihat penerapan perubahan ini:
terraform plan terraform apply

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat instance dengan dependensi bucket

  1. Sebelum melanjutkan, hapus resource baru ini dari konfigurasi Anda dan jalankan terraform apply sekali lagi untuk menghancurkannya. Anda tidak akan menggunakan bucket atau instance kedua tersebut lagi di lab ini.

Tugas 4. Menyediakan infrastruktur

Instance komputasi yang Anda luncurkan sejauh ini didasarkan pada image Google yang diberikan, tetapi tidak ada software tambahan yang diinstal atau konfigurasi yang diterapkan.

Google Cloud memungkinkan pelanggan mengelola image sistem operasi khusus milik pelanggan sendiri. Cara ini bagus untuk memastikan instance yang Anda sediakan dengan Terraform telah dikonfigurasi sebelumnya sesuai kebutuhan Anda. Packer adalah alat yang sempurna untuk tujuan ini dan mencakup builder untuk Google Cloud.

Terraform menggunakan penyedia untuk mengupload file, menjalankan skrip shell, atau menginstal dan memicu software lain seperti alat manajemen konfigurasi.

Menentukan penyedia

  1. Untuk menentukan penyedia, modifikasi blok resource yang menentukan vm_instance pertama di konfigurasi Anda agar terlihat seperti berikut:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" tags = ["web", "dev"] provisioner "local-exec" { command = "echo ${google_compute_instance.vm_instance.name}: ${google_compute_instance.vm_instance.network_interface[0].access_config[0].nat_ip} >> ip_address.txt" } # ... }

Perintah ini menambahkan blok provisioner dalam blok resource. Beberapa blok provisioner dapat ditambahkan untuk menentukan beberapa langkah penyediaan. Terraform mendukung banyak penyedia, tetapi untuk contoh ini, Anda menggunakan penyedia local-exec.

Penyedia local-exec mengeksekusi perintah secara lokal di mesin yang menjalankan Terraform, bukan di instance VM itu sendiri. Anda menggunakan penyedia ini, bukan yang lain, agar kita tidak perlu repot menentukan informasi koneksi apa pun saat ini.

Proses ini juga memperlihatkan contoh interpolasi string yang lebih kompleks daripada yang sudah Anda lihat sejauh ini. Setiap instance VM dapat memiliki beberapa antarmuka jaringan, jadi sebut yang pertama network_interface[0], dengan hitungan mulai dari 0, seperti yang dilakukan sebagian besar bahasa pemrograman. Setiap antarmuka jaringan juga dapat memiliki beberapa blok access_config, jadi sekali lagi sebut yang pertama.

  1. Jalankan terraform apply:
terraform apply

Sejauh ini, outputnya mungkin membingungkan di awal.

Terraform tidak menemukan apa pun yang dapat dilakukan. Jika Anda periksa, tidak ada file ip_address.txt di mesin lokal Anda.

Terraform menangani penyedia dengan cara yang berbeda dibandingkan argumen lain. Penyedia hanya berjalan ketika resource dibuat, tetapi penambahan penyedia tidak akan membuat resource tersebut dihancurkan secara paksa dan dibuat ulang.

  1. Gunakan terraform taint untuk memberi tahu Terraform agar membuat ulang instance tersebut:
terraform taint google_compute_instance.vm_instance

Resource yang rusak akan dihancurkan dan dibuat ulang pada perintah apply berikutnya.

  1. Jalankan terraform apply sekarang:
terraform apply
  1. Verifikasi bahwa semuanya berfungsi dengan melihat konten file ip_address.txt.

File ini berisi alamat IP, seperti yang Anda minta.

Penyedia yang gagal dan resource yang rusak

Jika resource berhasil dibuat tetapi gagal menjalankan langkah penyediaan, Terraform akan mengalami error dan menandai resource tersebut sebagai tainted (rusak). Resource yang rusak masih ada, tetapi tidak bisa dianggap aman untuk digunakan, karena penyediaannya gagal.

Saat Anda membuat rencana eksekusi berikutnya, Terraform akan menghapus semua resource yang rusak dan membuat resource baru, mencoba menyediakannya lagi setelah pembuatan.

Penyedia penghancuran

Penyedia juga dapat ditentukan agar hanya berjalan selama operasi penghancuran. Cara ini berguna untuk melakukan pembersihan sistem, mengekstraksi data, dll.

Untuk banyak resource, sebaiknya gunakan mekanisme pembersihan bawaan jika mungkin (seperti skrip init), tetapi penyedia dapat digunakan jika diperlukan.

Lab ini tidak akan menampilkan contoh penghancuran oleh penyedia. Jika Anda perlu menggunakan penyedia penghancuran, lihat dokumentasi penyedia.

Selamat

Di lab ini, Anda telah belajar cara membangun, mengubah, dan menghancurkan infrastruktur dengan Terraform. Anda kemudian membuat dependensi resource, dan menyediakan infrastruktur dasar dengan file konfigurasi Terraform.

Langkah berikutnya untuk mempelajari lebih lanjut

Lihat referensi berikut untuk menerima lebih banyak latihan praktis dengan Terraform:

Sertifikasi dan pelatihan Google Cloud

...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.

Manual Terakhir Diperbarui pada 25 Agustus 2025

Lab Terakhir Diuji pada 25 Agustus 2025

Hak cipta 2025 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.