Skip to main content
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):

Mengambil Informasi VPC Default AWS:

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