Kursus
Pertama kali saya menggunakan Terraform, saya skeptis. Rasanya aneh sekali memperbarui infrastruktur di editor kode alih-alih mengklik di konsol cloud, dan saat itu saya belum memahami manfaatnya. Namun karena menjadi kebijakan perusahaan, saya mengikutinya. Lalu, suatu hari, saya diminta untuk menyiapkan seluruh lingkungan dev yang baru. Saya sangat ingat mendatangi senior dev di tim saya dan menanyakan apa yang saya lewatkan, karena hanya butuh 10 menit. Dia memeriksa pekerjaan saya, tertawa, dan mengonfirmasi bahwa ya, memang sesederhana itu.
Tak heran Terraform menjadi begitu luas diadopsi di industri. Dengan komputasi cloud yang berkembang pesat, tim di seluruh dunia beralih ke Infrastructure as Code (IaC) untuk mengelola infrastruktur yang semakin kompleks. Kemampuan Terraform untuk menyediakan pendekatan yang konsisten, dapat diulang, dan skalabel dalam pengelolaan infrastruktur menjadikannya pilihan utama bagi perusahaan di berbagai sektor.
Dalam wawancara Terraform, yang dinilai bukan hanya seberapa banyak perintah yang Anda ketahui, tetapi kemampuan Anda menggunakan Terraform secara efektif agar selaras dengan alur kerja DevOps modern dan memecahkan masalah dunia nyata.
Komunikasi adalah kuncinya. Seperti dibahas dalam podcast DataFramed tentang peran teknis baru-baru ini, penguasaan sejati adalah kemampuan beradaptasi:
Anda harus mampu menyampaikan jenis wawasan apa pun dengan cara yang bisa dipahami anak enam tahun dan sekaligus memuaskan saya atau bahkan seseorang yang lebih teknis lagi. Jadi jika Anda benar-benar menguasai materi, Anda bisa menyederhanakannya habis-habisan, tetapi Anda juga bisa membuatnya begitu rumit sehingga, jujur saja, hanya orang-orang dengan keahlian teknis yang sangat, sangat tinggi yang dapat memahaminya.
Mo Chen, Data & Analytics Manager at NatWest Group
Menjaga pola pikir ini sangat penting saat Anda bersiap. Dalam artikel ini, saya akan mengulas beberapa pertanyaan wawancara Terraform yang paling umum. Saya membaginya ke dalam kategori – Dasar, Menengah, dan Lanjutan – sehingga di mana pun posisi Anda dalam karier, ada sesuatu untuk Anda!
Dan sebelum mulai: Jika Anda benar-benar baru di komputasi cloud, saya menyarankan untuk mengikuti kursus Pengantar Komputasi Cloud kami terlebih dahulu. Kursus ini menguraikan dasar-dasar cloud, menjelaskan istilah kunci seperti skalabilitas dan latensi, serta membahas keunggulan alat cloud dari penyedia seperti AWS. Terraform berkaitan dengan pengelolaan infrastruktur cloud, jadi pastikan Anda sudah familier dengan konsep-konsep ini terlebih dahulu, baik secara teori maupun praktik!
Pertanyaan Wawancara Terraform Dasar
Pertanyaan-pertanyaan ini berfokus pada apa itu Terraform dan bagaimana cara kerjanya. Anda kemungkinan besar akan menemui pertanyaan ini jika Anda belum pernah bekerja dengan Terraform sebelumnya, atau jika pewawancara belum yakin dengan tingkat kemampuan Anda dan ingin memulai dari dasar.
1. Apa itu Terraform, dan apa tujuan utamanya?
Terraform adalah alat Infrastructure as Code (IaC) open-source yang dibuat oleh HashiCorp. Alat ini memungkinkan Anda mendefinisikan dan mengelola infrastruktur cloud dan on-premises menggunakan bahasa konfigurasi deklaratif bernama HCL (HashiCorp Configuration Language). Terraform mengotomatiskan provisioning, pembaruan, dan versioning infrastruktur untuk memastikan konsistensi dan mengurangi upaya manual.
2. Bagaimana Terraform berbeda dari alat IaC lain seperti CloudFormation atau Ansible?
Terraform versus CloudFormation: Terraform bersifat cloud-agnostic, artinya dapat mengelola infrastruktur di berbagai penyedia (AWS, Azure, GCP, dll.), sedangkan AWS CloudFormation khusus untuk AWS. Terraform juga memiliki sintaks yang lebih fleksibel dan manajemen state yang lebih baik.
Terraform versus Ansible: Ansible terutama merupakan alat manajemen konfigurasi (mengelola perangkat lunak, paket, dan konfigurasi OS), sedangkan Terraform berfokus pada provisioning dan pengelolaan sumber daya infrastruktur secara deklaratif.
3. Apa perintah-perintah kunci Terraform, dan apa fungsinya?
-
terraform init– Menginisialisasi proyek Terraform dan mengunduh plugin penyedia yang diperlukan. -
terraform plan– Membuat rencana eksekusi yang menunjukkan perubahan apa yang akan diterapkan Terraform. -
terraform apply– Menerapkan perubahan yang direncanakan dan melakukan provisioning sumber daya. -
terraform destroy– Menghapus semua sumber daya yang dikelola. -
terraform validate– Memeriksa kesalahan sintaks pada berkas konfigurasi Terraform.
4. Apa itu berkas state Terraform?
Terraform mempertahankan berkas state (terraform.tfstate) untuk melacak infrastruktur nyata yang dikelolanya. Berkas state membantu Terraform memahami kondisi terkini sumber daya, mendeteksi drift, dan menerapkan perubahan secara efisien. Ini krusial untuk kolaborasi, tetapi karena berisi data sensitif, harus disimpan dengan aman.
5. Apa itu penyedia (provider) Terraform, dan mengapa penting?
Provider di Terraform adalah plugin yang memungkinkannya berinteraksi dengan platform cloud, layanan SaaS, dan API lainnya. Setiap provider (misalnya, AWS, Azure, Kubernetes) mendefinisikan sumber daya yang dapat dikelola Terraform. Tanpa provider, Terraform tidak akan tahu cara membuat atau mengonfigurasi sumber daya infrastruktur.
Jika Anda ingin mengetahui lebih lanjut tentang Terraform dan cara kerjanya, lihat panduan untuk pemula ini. Dalam artikel tersebut, saya membahas komponen kunci Terraform dengan lebih detail dan meninjau kelebihan serta kekurangan alat ini. Ada juga tutorial mini untuk membantu Anda memulai provisioning infrastruktur di AWS.
Pertanyaan Wawancara Terraform Menengah
Bagian ini membahas lebih dalam alur kerja Terraform, praktik konfigurasi, dan strategi untuk mengelola state dan sumber daya dalam proyek dunia nyata. Anda memerlukan cukup banyak pengalaman praktis dengan Terraform untuk menjawab pertanyaan-pertanyaan ini, terutama jika diminta membahas contoh spesifik.
6. Apa itu modul Terraform?
Modul Terraform adalah komponen yang dapat digunakan kembali untuk membantu mengorganisasi kode infrastruktur dengan mengelompokkan sumber daya terkait. Modul meningkatkan keterpeliharaan, memungkinkan tim Anda menggunakan kembali kode di berbagai proyek, dan menyederhanakan deployment.
Sebuah modul bisa sesederhana direktori yang berisi berkas .tf dan berkas variables.tf opsional!
7. Bagaimana Terraform mengelola remote state?
Secara default, Terraform menyimpan state secara lokal, tetapi untuk kolaborasi, Terraform mendukung backend jarak jauh (S3 dengan DynamoDB untuk AWS, GCS untuk Google Cloud, atau Terraform Cloud). Remote state memungkinkan:
- Akses bersama untuk banyak anggota tim.
- Penguncian state untuk mencegah konflik.
- Keamanan lebih baik dengan enkripsi dan kontrol akses.
8. Apa itu workspace Terraform, dan kapan sebaiknya digunakan?
Workspace Terraform memungkinkan Anda mempertahankan berkas state terpisah dalam konfigurasi yang sama. Ini berguna saat mengelola banyak lingkungan (seperti dev, staging, prod) tanpa menduplikasi kode.
Workspace paling cocok untuk pemisahan lingkungan yang sederhana, tetapi bisa terlalu sulit dipelihara untuk setup multi-akun yang kompleks.

Sumber: DevOps Mojo
9. Bagaimana Terraform menangani impor infrastruktur yang sudah ada, dan apa keterbatasannya?
Terraform dapat mengimpor sumber daya yang sudah ada ke dalam state menggunakan perintah terraform import. Namun, Terraform tidak secara otomatis menghasilkan berkas konfigurasi (.tf ) untuk sumber daya tersebut, sehingga Anda harus menulisnya secara manual.
Ada beberapa keterbatasan pada fungsionalitas impor ini:
- Setup yang kompleks memerlukan rekonsiliasi konfigurasi secara manual.
- Beberapa tipe sumber daya tidak didukung untuk diimpor.
- Ada risiko drift jika konfigurasi sumber daya yang diimpor tidak cocok dengan infrastruktur aktual.
10. Apa itu provisioner Terraform, dan kapan sebaiknya digunakan?
Provisioner mengeksekusi skrip atau perintah pada suatu sumber daya setelah dibuat. Provisioner sering digunakan untuk tugas seperti mengonfigurasi VM atau memasang perangkat lunak.
Ada dua jenis provisioner:
- Local provisioner, yang berjalan pada mesin yang mengeksekusi Terraform).
- Remote provisioner, yang berjalan pada sumber daya target melalui SSH atau WinRM.
Karena provisioner memperkenalkan dependensi dan mengurangi sifat deklaratif Terraform, penggunaannya sebaiknya dibatasi. Alternatifnya adalah menggunakan alat manajemen konfigurasi seperti Ansible atau cloud-init.

Sumber: Opcito
11. Apa itu deteksi drift di Terraform, dan bagaimana cara menanganinya?
Deteksi drift mengacu pada situasi ketika kondisi infrastruktur aktual menyimpang dari kondisi yang didefinisikan dalam konfigurasi Terraform. Ini dapat terjadi ketika ada perubahan manual di luar Terraform, seperti pembaruan di konsol penyedia cloud atau alat otomasi lain.
Terraform dapat mendeteksi drift dengan menjalankan terraform plan, yang membandingkan state saat ini dari berkas state dengan infrastruktur nyata.
Jika terdeteksi drift, Anda harus membatalkan perubahan manual agar sesuai dengan konfigurasi Terraform, memperbarui konfigurasi untuk mencerminkan kondisi yang diinginkan yang baru, dan menjalankan terraform apply untuk menyelaraskan kembali infrastruktur dengan konfigurasi.
12. Bagaimana Anda menerapkan rolling update menggunakan Terraform untuk aplikasi yang dideploy pada banyak instance?
Rolling update memungkinkan Anda memperbarui infrastruktur secara bertahap untuk mengurangi downtime dan memastikan sebagian instance aplikasi tetap tersedia selama pembaruan. Dalam skenario rolling update, Terraform membuat instance baru dari sumber daya, menunggu hingga sehat (menggunakan health check), lalu secara bertahap mengganti instance lama.
Secara praktis, Anda dapat menerapkan rolling update dengan mendefinisikan infrastruktur yang immutable di Terraform dan menggunakan count atau for_each dalam definisi sumber daya Anda (misalnya, instance EC2, load balancer).
13. Bagaimana Anda menangani dependensi sumber daya di Terraform, dan apa peran dependensi implisit dan eksplisit?
Di Terraform, dependensi sumber daya ditangani secara otomatis melalui mekanisme pembentukan graf. Dependensi implisit tercipta ketika satu sumber daya mereferensikan sumber daya lain dalam konfigurasinya (misalnya, mereferensikan aws_security_group pada aws_instance) dan Terraform secara otomatis menyimpulkan urutan dependensi.
Dependensi eksplisit berguna untuk menangani kasus tepi ketika Terraform tidak dapat secara otomatis menyimpulkan urutan dependensi. Dependensi ini dibuat ketika argumen depends_on digunakan, yang memaksa Terraform menerapkan urutan eksekusi tertentu meskipun sumber daya tidak direferensikan secara langsung.

Sumber: HashiCorp
Pertanyaan Wawancara Terraform Lanjutan
Pada level lanjutan, pewawancara ingin melihat keahlian Anda dalam mengelola infrastruktur skala besar dengan Terraform. Pertanyaannya mungkin mencakup topik seperti deployment multi-cloud, kolaborasi dalam tim, dan tantangan otomasi. Di sinilah Anda dapat benar-benar menunjukkan pengalaman dan keterampilan Anda, jadi jangan ragu untuk membahas proyek yang pernah Anda kerjakan dan berikan contoh praktis!
14. Bagaimana Anda mengelola deployment multi-cloud yang kompleks dengan Terraform?
Mengelola lingkungan multi-cloud memerlukan penanganan banyak provider dalam satu konfigurasi. Terraform memungkinkan Anda mengonfigurasi sumber daya dari berbagai penyedia cloud (misalnya, AWS, Azure, Google Cloud) dalam berkas main.tf yang sama dengan menentukan provider berbeda dan menggunakan sumber daya spesifik provider.
Anda dapat menggunakan alias provider untuk mengelola beberapa instance dari provider yang sama (misalnya, AWS di wilayah berbeda), dan memanfaatkan modul untuk mengabstraksikan konfigurasi umum dan mencegah duplikasi. Namun, pastikan Anda mengelola dependensi lintas cloud dengan hati-hati, karena sumber daya di cloud berbeda mungkin tidak memiliki hubungan langsung.
15. Apa itu perintah taint dan untaint di Terraform? Bagaimana Anda menggunakannya dalam skenario nyata?
terraform taint menandai sebuah sumber daya untuk dibuat ulang pada saat terraform apply berikutnya dijalankan, meskipun tidak ada perubahan pada konfigurasi. Ini berguna ketika suatu sumber daya bermasalah atau berada dalam kondisi yang tidak diinginkan.
Sebagai contoh, jika sebuah instance EC2 gagal dan perlu dibuat ulang, Anda dapat menandainya dengan taint untuk memicu penghancuran dan pembuatan ulang selama apply berikutnya.terraform untaint digunakan untuk membatalkan perintah taint dan mencegah sumber daya dibuat ulang.
16. Apa itu Terraform Cloud dan Terraform Enterprise, dan apa perbedaan utamanya?
Terraform Cloud adalah layanan SaaS dari HashiCorp yang menyediakan fitur kolaborasi, seperti manajemen remote state, manajemen workspace, integrasi version control, dan penegakan kebijakan. Cocok untuk tim kecil hingga menengah.
Terraform Enterprise adalah versi self-hosted yang menambahkan fitur lebih lanjut seperti registri modul privat, kontrol akses lebih granular, dan fitur keamanan lanjutan, termasuk deployment on-premise.
Singkatnya: Terraform Cloud dihosting dan dikelola oleh HashiCorp, sementara Terraform Enterprise di-host secara mandiri dan memberi organisasi kontrol penuh atas infrastrukturnya.

Sumber: Google Cloud
17. Bagaimana Anda mengelola penguncian state dan isu konkurensi di Terraform saat bekerja dengan tim besar?
Penguncian state di Terraform dimaksudkan untuk mencegah dua pengguna memodifikasi state yang sama secara bersamaan karena dapat menyebabkan berkas state rusak.
Terraform Cloud dan Enterprise secara otomatis menangani penguncian state menggunakan backend.
Untuk backend jarak jauh seperti S3 dengan DynamoDB, Terraform menggunakan DynamoDB untuk penguncian state dan mencegah isu konkurensi.
18. Apa itu deployment tanpa downtime (zero-downtime), dan bagaimana Terraform dapat mencapainya?
Deployment tanpa downtime terjadi ketika menerapkan perubahan pada infrastruktur tanpa mengganggu ketersediaan layanan. Terraform dapat mencapainya melalui strategi seperti:
- Blue-Green deployment: Menggunakan dua lingkungan identik (Blue dan Green), lalu mengalihkan trafik di antara keduanya untuk menerapkan perubahan tanpa downtime.
- Rolling update: Menerapkan perubahan secara bertahap pada sebagian kecil instance pada satu waktu, memungkinkan sisanya tetap aktif selama pembaruan.
Ini adalah strategi umum dalam arsitektur cloud dan Terraform menyediakan fitur yang dapat membantu menerapkannya. Namun, penerapan penuh strategi zero-downtime ini sering kali memerlukan alat tambahan, seperti load balancer.
19. Bagaimana Anda menangani manajemen secret di Terraform, dan apa praktik terbaiknya?
Terraform sendiri tidak mengelola secret tetapi dapat terintegrasi dengan alat manajemen secret eksternal. Misalnya, Anda dapat menggunakan:
- HashiCorp Vault: Terraform memiliki dukungan bawaan untuk Vault guna mengambil secret seperti API key atau kata sandi saat runtime, sehingga tidak ditulis hardcode di berkas konfigurasi.
- Variabel lingkungan: Untuk nilai sensitif, Anda dapat menetapkannya sebagai variabel lingkungan.
- Backend jarak jauh dengan enkripsi: Simpan berkas state di backend jarak jauh dengan enkripsi aktif untuk mencegah akses tidak sah ke data sensitif.
- Penggunaan argumen sensitive: Tandai output dan variabel sebagai sensitive untuk mencegahnya muncul dalam log Terraform plan/apply.
20. Bagaimana Anda menerapkan provider Terraform kustom, dan kapan Anda membutuhkannya?
Provider Terraform kustom digunakan ketika Anda perlu mengelola sumber daya atau layanan yang tidak didukung secara native oleh Terraform. Provider ini diimplementasikan dalam Go dan melibatkan pembuatan fungsi kustom yang berinteraksi dengan API atau layanan yang tidak tercakup oleh provider yang ada, seperti API internal, layanan cloud niche, atau teknologi proprietari.
Terraform menyediakan Terraform Plugin SDK untuk membantu Anda membangun provider, tetapi Anda harus menangani autentikasi, operasi CRUD (Create, Read, Update, Delete), dan konfigurasi khusus lainnya yang spesifik untuk API yang Anda gunakan.
Kesimpulan
Saya harap artikel ini memberi Anda pengetahuan dan kepercayaan diri untuk sukses dalam wawancara Terraform!
Jika Anda perlu lebih banyak latihan, lihat tutorial HashiCorp Terraform untuk mempelajari cara menggunakan Terraform untuk tugas dan use case umum, atau baca postingan blog kami 14 Alat Esensial Data Engineering untuk Digunakan pada 2024 untuk memahami bagaimana Terraform masuk dalam perangkat kerja Data Engineer.

Saya adalah tech lead berorientasi produk yang berspesialisasi dalam mengembangkan startup tahap awal dari prototipe pertama hingga mencapai product-market fit dan seterusnya. Saya sangat penasaran dengan cara orang menggunakan teknologi, dan saya senang bekerja erat dengan para founder serta tim lintas fungsi untuk mewujudkan ide-ide berani. Saat tidak membangun produk, saya mencari inspirasi di berbagai penjuru dunia atau melepas penat di studio yoga.
FAQ Terraform
Sejauh mana pengetahuan Terraform saya harus untuk wawancara?
Tergantung pada perannya. Untuk posisi junior, memahami konsep dasar seperti provider, manajemen state, dan resource sudah cukup. Peran level menengah memerlukan pengetahuan tentang modul, workspace, dan remote state. Peran senior mengharapkan keahlian dalam penguncian state, integrasi CI/CD, dan debugging masalah yang kompleks.
Haruskah saya menghafal perintah Terraform untuk wawancara?
Meskipun mengetahui perintah kunci seperti terraform init, plan, dan apply itu berguna, pewawancara lebih peduli pada bagaimana Anda menerapkan konsep Terraform. Mereka mungkin meminta Anda menjelaskan bagaimana Anda akan menyusun Terraform untuk skenario dunia nyata ketimbang sekadar menyebutkan perintah.
Seberapa penting sertifikasi Terraform untuk mendapatkan pekerjaan?
Sertifikasi Terraform (seperti HashiCorp Certified: Terraform Associate) dapat membantu memvalidasi pengetahuan Anda, tetapi tidak wajib untuk sebagian besar peran. Pengalaman praktis dengan Terraform dalam proyek dunia nyata lebih bernilai daripada sertifikasi semata. Namun, jika Anda baru dengan Terraform, mendapatkan sertifikasi bisa menjadi cara yang baik untuk belajar.
