Sering kali dalam menyusun arsitektur infrastruktur, kita tidak ingin menulis skrip panjang, file JSON policy, atau template konfigurasi Nginx langsung di dalam blok HCL main.tf.
Terraform menyediakan fungsi bawaan (built-in functions) dan blok Data Source untuk mengimpor dan membaca berkas eksternal dari sistem file komputermu maupun dari cloud.
1. Fungsi file() — Membaca Berkas Statis
Fungsi file() membaca konten berkas statis di komputermu dan mengembalikannya sebagai teks string.
Contoh 1: Mengimpor Public Key SSH
Daripada menulis string kunci SSH sepanjang 500 karakter di dalam kode, simpan di file ~/.ssh/id_rsa.pub atau ./keys/id_rsa.pub:
Variabel ${path.module} memastikan Terraform mencari path relatif terhadap lokasi folder file .tf saat ini.
Contoh 2: Mengimpor IAM Policy JSON
Simpan kebijakan izin AWS di file policies/s3-readonly-policy.json:
2. Fungsi templatefile() — Membaca Skrip Dinamis
Jika berkas eksternal kamu membutuhkan penyuntikan variabel dinamis (seperti IP database, port, atau domain), gunakan fungsi templatefile().
Buat Berkas Skrip scripts/user_data.sh.tftpl:
Panggil Menggunakan templatefile() di main.tf:
3. Blok data (Data Source) — Membaca Resource Cloud Tanpa Membuat Ulang
Blok data memungkinkan Terraform membaca informasi sumber daya yang sudah ada di cloud provider secara otomatis (read-only).
Mengambil AMI Ubuntu 22.04 Terbaru Secara Dinamis:
Alih-alih mencari ID AMI AWS secara manual di konsol (karena ID AMI berbeda di setiap region):
Dengan blok data, Terraform selalu mendapatkan data terbaru secara dinamis dari cloud tanpa kamu harus melakukan hardcode ID sama sekali! Last modified on October 26, 2026