
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Provision infrastructure
/ 50
Upload files to the bucket
/ 50
Lab ini dikembangkan dengan partner kami, Hashicorp. Informasi Anda mungkin akan dibagikan kepada Hashicorp, yaitu sponsor lab ini, jika Anda memilih untuk menerima info terbaru terkait produk, pengumuman, dan penawaran di Profil Akun Anda.
Saat Anda mengelola infrastruktur dengan Terraform, konfigurasi yang semakin kompleks akan terbentuk. Tidak ada batasan intrinsik terhadap kompleksitas satu file atau direktori konfigurasi Terraform, sehingga Anda dapat terus menulis dan mengupdate file konfigurasi Anda dalam satu direktori. Namun, jika Anda melakukannya, Anda mungkin akan mengalami satu atau beberapa masalah berikut:
Di lab ini, Anda akan mempelajari bagaimana modul dapat mengatasi masalah ini, mempelajari struktur modul Terraform, dan praktik terbaik saat menggunakan dan membuat modul.
Berikut adalah beberapa cara modul membantu memecahkan masalah yang tercantum di atas:
Mengatur konfigurasi: Modul mempermudah navigasi, memahami, dan mengupdate konfigurasi Anda dengan menyatukan bagian-bagian terkait konfigurasi Anda. Bahkan infrastruktur yang kerumitannya sedang pun memerlukan ratusan atau ribuan baris konfigurasi untuk diterapkan. Dengan menggunakan modul, Anda dapat mengatur konfigurasi menjadi komponen-komponen logis.
Mengenkapsulasi konfigurasi: Manfaat lain dalam menggunakan modul adalah mengenkapsulasi konfigurasi menjadi komponen-komponen logis yang berbeda. Enkapsulasi dapat membantu mencegah konsekuensi yang tidak diinginkan, seperti perubahan pada satu bagian konfigurasi yang secara tidak sengaja menyebabkan perubahan pada infrastruktur lain, dan mengurangi kemungkinan kesalahan sederhana seperti penggunaan nama yang sama untuk dua resource berbeda.
Menggunakan kembali konfigurasi: Menulis semua konfigurasi Anda tanpa menggunakan kode yang ada dapat memakan waktu dan rawan kesalahan. Menggunakan modul dapat menghemat waktu dan mengurangi kesalahan yang merugikan dengan menggunakan kembali konfigurasi yang ditulis oleh Anda sendiri, anggota tim Anda yang lain, atau praktisi Terraform lain yang telah menerbitkan modul untuk Anda gunakan. Anda juga dapat berbagi modul yang telah Anda tulis dengan tim Anda atau masyarakat umum, sehingga mereka dapat memperoleh manfaat dari kerja keras Anda.
Memberikan konsistensi dan memastikan praktik terbaik: Modul juga membantu memberikan konsistensi dalam konfigurasi Anda. Konsistensi membuat konfigurasi kompleks jadi lebih mudah dipahami, dan juga membantu memastikan bahwa praktik terbaik diterapkan di seluruh konfigurasi Anda. Misalnya, penyedia cloud menawarkan banyak opsi untuk mengonfigurasi layanan penyimpanan objek, seperti Amazon S3 (Simple Storage Service) atau bucket Cloud Storage Google. Banyak insiden keamanan tingkat tinggi yang melibatkan penyimpanan objek yang salah diamankan, dan karena banyaknya opsi konfigurasi kompleks yang terlibat, kesalahan konfigurasi layanan ini bisa terjadi secara tidak sengaja.
Menggunakan modul dapat membantu mengurangi kesalahan ini. Misalnya, Anda dapat membuat modul untuk menjelaskan bagaimana semua bucket situs publik organisasi Anda akan dikonfigurasi, dan modul lain untuk bucket pribadi yang digunakan untuk aplikasi pencatatan log. Selain itu, jika konfigurasi untuk suatu jenis resource perlu diupdate, penggunaan modul memungkinkan Anda membuat update tersebut di satu tempat dan menerapkannya ke semua kasus saat Anda menggunakan modul ini.
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
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 praktik ini dapat Anda gunakan untuk melakukan sendiri 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:
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 dengan info berikut:
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.
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
Anda juga dapat menemukan Username di panel Lab Details.
Klik Next.
Salin Password di bawah dan tempel ke dialog Welcome.
Anda juga dapat menemukan Password di panel Lab Details.
Klik Next.
Klik halaman berikutnya:
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
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.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
Klik Authorize.
Output Anda sekarang akan terlihat seperti ini:
Output:
Output:
Contoh output:
gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Modul Terraform adalah sekumpulan file konfigurasi Terraform dalam satu direktori. Bahkan konfigurasi sederhana yang terdiri atas satu direktori dengan satu atau beberapa file .tf
adalah sebuah modul. Jika Anda menjalankan perintah Terraform langsung dari direktori seperti itu, hal ini akan dianggap sebagai modul root. Jadi dalam hal ini, tiap konfigurasi Terraform adalah bagian dari sebuah modul. Anda mungkin memiliki sekumpulan file konfigurasi Terraform sederhana seperti ini:
Dalam hal ini, saat Anda menjalankan perintah Terraform dari dalam direktori minimal-module
, konten direktori tersebut akan dianggap sebagai modul root.
Perintah Terraform hanya akan langsung menggunakan file konfigurasi dalam satu direktori, yang biasanya merupakan direktori kerja saat ini. Namun, konfigurasi Anda dapat menggunakan blok modul untuk memanggil modul di direktori lain. Ketika menemukan blok modul, Terraform akan memuat dan memproses file konfigurasi modul tersebut.
Modul yang dipanggil oleh konfigurasi lain terkadang disebut sebagai "modul turunan" dari konfigurasi tersebut.
Modul dapat dimuat dari sistem file lokal atau sumber jarak jauh. Terraform mendukung berbagai sumber jarak jauh, termasuk Terraform Registry, sebagian besar sistem kontrol versi, URL HTTP, dan registry modul pribadi Terraform Cloud atau Terraform Enterprise.
Dalam banyak hal, modul Terraform mirip dengan konsep library, paket, atau modul yang ditemukan di sebagian besar bahasa pemrograman, dan memberikan banyak manfaat yang sama. Sama seperti hampir semua program komputer rumit, konfigurasi Terraform di dunia nyata hampir selalu menggunakan modul untuk memberikan manfaat yang disebutkan di atas.
Tiap praktisi Terraform disarankan menggunakan modul dengan mengikuti praktik terbaik berikut:
Mulailah menulis konfigurasi Anda dengan rencana modul. Bahkan untuk konfigurasi Terraform yang sedikit rumit dan dikelola oleh satu orang, manfaat penggunaan modul akan lebih besar daripada waktu yang diperlukan untuk menggunakannya dengan benar.
Gunakan modul lokal untuk mengatur dan mengenkapsulasi kode Anda. Meskipun Anda tidak menggunakan atau memublikasikan modul jarak jauh, mengatur konfigurasi dalam bentuk modul sejak awal akan secara signifikan mengurangi beban pemeliharaan dan update konfigurasi seiring dengan semakin kompleksnya infrastruktur Anda.
Gunakan Terraform Registry publik untuk menemukan modul yang berguna. Dengan cara ini, Anda dapat dengan cepat dan percaya diri mengimplementasikan konfigurasi Anda dengan mengandalkan pekerjaan orang lain.
Publikasikan dan bagikan modul dengan tim Anda. Sebagian besar infrastruktur dikelola oleh tim yang terdiri atas sejumlah orang, dan modul adalah alat penting yang dapat digunakan tim untuk membuat dan memelihara infrastruktur. Seperti disebutkan sebelumnya, Anda dapat memublikasikan modul baik secara publik atau pribadi. Anda akan melihat cara melakukannya di lab berikutnya dalam serial ini.
Di bagian ini, Anda akan menggunakan modul dari Terraform Registry untuk menyediakan lingkungan contoh di Google Cloud. Konsep yang Anda gunakan di sini akan berlaku untuk segala modul dari semua sumber.
Halaman ini berisi informasi tentang modul dan link ke repositori sumber. Sisi kanan halaman mencakup antarmuka dropdown untuk memilih versi modul dan petunjuk penggunaan modul guna menyediakan infrastruktur.
Saat memanggil modul, diperlukan argumen source
. Dalam contoh ini, Terraform akan mencari modul di Terraform Registry yang cocok dengan string yang diberikan. Anda juga dapat menggunakan URL atau jalur file lokal untuk sumber modul Anda. Baca dokumentasi Terraform untuk mengetahui daftar sumber modul yang mungkin digunakan.
Argumen lain yang ditampilkan di sini adalah version
. Untuk sumber yang didukung, version akan memungkinkan Anda menentukan versi modul apa yang akan dimuat. Di lab ini, Anda akan menentukan nomor versi yang pasti untuk modul yang Anda gunakan. Anda dapat membaca cara lainnya untuk menentukan versi dalam dokumentasi modul.
Argumen lain pada blok modul diperlakukan sebagai variabel input ke modul.
v6.0.1
:Hal ini memastikan Anda menggunakan nomor versi yang benar.
Di toolbar Cloud Shell, klik Open Editor. Untuk beralih antara Cloud Shell dan editor kode, klik Open Editor atau Open Terminal sesuai kebutuhan, atau klik Open in a new window untuk membiarkan Editor terbuka di tab terpisah.
Pada editor, buka terraform-google-network/examples/simple_project
, dan buka file main.tf
. Konfigurasi main.tf
Anda akan terlihat seperti ini:
Konfigurasi ini mencakup satu blok penting:
module "test-vpc-module"
menetapkan Virtual Private Cloud (VPC), yang akan menyediakan layanan jaringan untuk seluruh infrastruktur Anda.Beberapa variabel input wajib ada, yang berarti modul tidak akan memberikan nilai default. Nilai eksplisit harus diberikan agar Terraform dapat berjalan dengan benar.
Dalam blok "test-vpc-module"
modul, tinjau variabel input yang Anda setel. Masing-masing variabel input ini didokumentasikan di Terraform Registry. Input yang diperlukan untuk modul ini adalah:
network_name
: Nama jaringan yang sedang dibuatproject_id
: ID dari project tempat VPC ini akan dibuatsubnets
: Daftar subnet yang sedang dibuatUntuk menggunakan sebagian besar modul, Anda perlu meneruskan variabel input ke konfigurasi modul. Konfigurasi yang memanggil modul bertanggung jawab untuk mengatur nilai inputnya, yang akan diteruskan sebagai argumen ke blok modul. Selain source
dan version
, sebagian besar argumen pada blok modul akan menetapkan nilai variabel.
Di halaman Terraform Registry untuk modul jaringan Google Cloud, tab Inputs menjelaskan semua variabel input yang didukung modul.
Menggunakan variabel input dengan modul sangat mirip dengan cara menggunakan variabel dalam konfigurasi Terraform apa pun. Pola yang umum adalah mengidentifikasi variabel input modul yang mungkin ingin Anda ubah di masa mendatang, lalu membuat variabel yang sama di file variables.tf
konfigurasi Anda dengan nilai default yang logis. Variabel-variabel tersebut kemudian dapat diteruskan ke blok modul sebagai argumen.
Di Editor, masih di direktori yang sama, buka variables.tf
.
Isi variabel project_id
dengan output dari perintah sebelumnya. Anda harus mengikuti format di bawah ini dan menetapkan nilai default
untuk variabel:
variables.tf
, tambahkan variabel network_name
. Anda dapat menggunakan nama example-vpc
atau nama lain yang Anda inginkan. Anda harus mengikuti format di bawah ini dan menetapkan nilai default
untuk variabel:main.tf
, update parameter network_name
untuk menggunakan variabel yang baru saja Anda tetapkan dengan mengatur nilainya ke var.network_name
.main.tf
, update region subnet pada baris 35, 40, dan 47 dari us-west1
ke Modul juga memiliki nilai output, yang ditetapkan dalam modul dengan kata kunci output
. Anda dapat mengaksesnya dengan merujuk ke module.<MODULE NAME>.<OUTPUT NAME>
. Seperti halnya variabel input, output modul tercantum di bawah tab outputs
pada Terraform Registry.
Output modul biasanya diteruskan ke bagian lain konfigurasi Anda atau ditetapkan sebagai output di modul root Anda. Anda akan melihat kedua kegunaannya di lab ini.
outputs.tf
dalam direktori konfigurasi Anda. Verifikasi bahwa file tersebut berisi yang berikut ini:simple_project
Anda:Bagus. Anda baru saja menggunakan modul pertama Anda. Output konfigurasi Anda akan terlihat seperti ini:
Saat menggunakan modul baru untuk pertama kalinya, Anda harus menjalankan terraform init
atau terraform get
untuk menginstal modul. Saat salah satu dari perintah ini dijalankan, Terraform akan menginstal modul baru di direktori .terraform/modules
dalam direktori kerja konfigurasi Anda. Untuk modul lokal, Terraform akan membuat symlink ke direktori modul. Oleh sebab itu, tiap perubahan pada modul lokal akan langsung berlaku, tanpa Anda harus menjalankan terraform get
lagi.
Sekarang Anda telah mengetahui cara menggunakan modul dari Terraform Registry, cara mengonfigurasi modul tersebut dengan variabel input, dan cara mendapatkan nilai output dari modul tersebut.
Tanggapi prompt tersebut dengan yes
.
Terraform akan menghancurkan infrastruktur yang Anda buat.
Setelah menghancurkan resource Anda, hapus folder terraform-google-network
.
Klik Check my progress untuk memverifikasi tujuan.
Pada tugas terakhir, Anda menggunakan modul dari Terraform Registry untuk membuat jaringan VPC di Google Cloud. Meskipun menggunakan modul Terraform yang ada dengan benar merupakan keterampilan yang penting, tiap praktisi Terraform juga akan mendapatkan manfaat dari mempelajari cara membuat modul. Kami menyarankan Anda untuk membuat tiap konfigurasi Terraform dengan asumsi bahwa konfigurasi tersebut dapat digunakan sebagai modul, karena hal ini akan membantu Anda mendesain konfigurasi agar fleksibel, dapat digunakan kembali, dan dapat disusun.
Seperti yang mungkin sudah Anda ketahui, Terraform memperlakukan tiap konfigurasi sebagai sebuah modul. Saat Anda menjalankan perintah terraform
, atau menggunakan Terraform Cloud atau Terraform Enterprise untuk menjalankan Terraform dari jarak jauh, direktori target yang berisi konfigurasi Terraform akan diperlakukan sebagai modul root.
Dalam tugas ini, Anda akan membuat modul untuk mengelola bucket Cloud Storage yang digunakan untuk menghosting situs statis.
Terraform memperlakukan direktori lokal apa pun yang direferensikan dalam argumen source
dari blok module
sebagai modul. Struktur file tipikal untuk modul baru adalah:
.tf
atau menggunakan struktur file lain yang Anda inginkan.
Masing-masing file ini memiliki tujuan:
LICENSE
berisi lisensi untuk mendistribusikan modul Anda. Saat Anda membagikan modul Anda, file LICENSE akan membuat orang yang menggunakannya mengetahui persyaratan penyediaan modul tersebut. Terraform sendiri tidak menggunakan file ini.README.md
berisi dokumentasi dalam format markdown yang menjelaskan cara menggunakan modul Anda. Terraform tidak menggunakan file ini, tetapi layanan seperti Terraform Registry dan GitHub akan menampilkan konten file ini kepada pengunjung halaman Terraform Registry atau GitHub modul Anda.main.tf
berisi set konfigurasi utama untuk modul Anda. Anda juga dapat membuat file konfigurasi lain dan mengaturnya dengan cara yang sesuai untuk project Anda.variables.tf
berisi definisi variabel untuk modul Anda. Ketika modul Anda digunakan oleh orang lain, variabel akan dikonfigurasi sebagai argumen di blok modul. Karena semua nilai Terraform harus ditetapkan, semua variabel yang tidak memiliki nilai default akan menjadi argumen wajib. Variabel dengan nilai default juga dapat diberikan sebagai argumen modul, sehingga akan menggantikan nilai default.outputs.tf
berisi definisi output untuk modul Anda. Output modul tersedia untuk konfigurasi menggunakan modul, sehingga sering kali digunakan untuk meneruskan informasi tentang bagian infrastruktur Anda yang ditetapkan oleh modul ke bagian lain konfigurasi Anda.Waspadai file-file ini dan pastikan Anda tidak mendistribusikannya sebagai bagian dari modul Anda:
terraform.tfstate
dan terraform.tfstate.backup
berisi status Terraform Anda dan merupakan cara Terraform melacak hubungan antara konfigurasi Anda dan infrastruktur yang disediakan olehnya..terraform
berisi modul dan plugin yang digunakan untuk menyediakan infrastruktur Anda. File-file ini khusus untuk masing-masing instance Terraform saat menyediakan infrastruktur, bukan konfigurasi infrastruktur yang ditentukan dalam file-file .tf
.*.tfvars
tidak perlu didistribusikan bersama modul Anda kecuali Anda juga menggunakannya sebagai konfigurasi Terraform mandiri karena variabel input modul disetel melalui argumen ke blok modul dalam konfigurasi Anda.Buka direktori home dan buat modul root dengan membuat file konfigurasi main.tf
yang baru. Kemudian buat direktori bernama modules yang berisi folder lain bernama gcs-static-website-bucket
. Anda akan bekerja dengan tiga file konfigurasi Terraform di dalam direktori gcs-static-website-bucket
: website.tf
, variables.tf
, dan outputs.tf
.
gcs-static-website-bucket
, jalankan perintah berikut untuk membuat file bernama README.md
dengan konten berikut:LICENSE
dengan konten berikut:Struktur direktori modul Anda saat ini akan terlihat seperti ini:
website.tf
di dalam direktori modules/gcs-static-website-bucket
:Dokumentasi penyedia adalah GitHub.
variables.tf
di modul Anda dan tambahkan kode berikut:outputs.tf
di dalam modul Anda:Seperti halnya variabel, output dalam modul menjalankan fungsi yang sama seperti di modul root, tetapi diakses dengan cara yang berbeda. Output modul dapat diakses sebagai atribut hanya baca pada objek modul, yang tersedia dalam konfigurasi yang memanggil modul.
main.tf
di direktori root lalu tambahkan referensi ke modul baru:outputs.tf
untuk modul root Anda:outputs.tf
:variables.tf
:variables.tf
. Setel variabel project_id
dan name
ke nilai default untuk Project ID Anda: Tiap kali Anda menambahkan modul baru ke konfigurasi, Terraform harus menginstal modul tersebut sebelum dapat digunakan. Perintah terraform get
dan terraform init
akan menginstal dan mengupdate modul. Perintah terraform init
juga akan melakukan inisialisasi pada backend dan menginstal plugin.
Anda sekarang telah mengonfigurasi dan menggunakan modul Anda sendiri untuk membuat situs statis. Anda mungkin ingin mengunjungi situs statis ini. Saat ini bucket Anda tidak ada isinya, jadi tidak ada yang dapat dilihat di situs. Untuk melihat konten apa pun, Anda perlu mengupload objek ke bucket Anda. Anda dapat mengupload konten direktori www
di repositori GitHub.
YOUR-BUCKET-NAME
dengan nama bucket penyimpanan Anda:https://storage.cloud.google.com/YOUR-BUCKET-NAME/index.html
, dengan mengganti YOUR-BUCKET-NAME
dengan nama bucket penyimpanan Anda.Anda akan melihat halaman web HTML dasar yang berbunyi Nothing to see here.
Klik Check my progress untuk memverifikasi tujuan.
Terakhir, Anda akan mengosongkan project dengan menghancurkan infrastruktur yang baru saja Anda buat.
Setelah Anda menjawab prompt dengan yes
, Terraform akan menghancurkan semua resource yang Anda buat dengan mengikuti lab ini.
Di lab ini, Anda telah mempelajari dasar-dasar modul Terraform dan cara menggunakan modul yang sudah ada dari Registry. Kemudian Anda membangun modul Anda sendiri untuk membuat situs statis yang dihosting di bucket Cloud Storage. Dengan melakukannya, Anda menetapkan input, output, dan variabel untuk file konfigurasi serta mempelajari praktik terbaik untuk membuat modul.
Link-link ini menyediakan lebih banyak praktik interaktif dengan Terraform:
...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 26 Januari 2024
Lab Terakhir Diuji pada 11 Desember 2023
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.