Terraform State Push dan Pull: Panduan Teknis Operasional

Definisi dan Fungsi Utama

Perintah terraform state push dan terraform state pull adalah mekanisme manual untuk berinteraksi dengan file terraform.tfstate. terraform state pull digunakan untuk mengunduh file state dari backend (seperti S3, GCS, atau Terraform Cloud) ke sistem lokal, sementara terraform state push digunakan untuk mengunggah file state lokal ke backend. Penggunaan perintah ini sangat jarang disarankan dalam alur kerja normal karena risiko tinggi terjadinya korupsi data atau konflik state.

Tabel Perbandingan Operasional

PerintahFungsi UtamaRisiko
terraform state pullMengunduh state dari remote ke lokalData sensitif terekspos di lokal
terraform state pushMengunggah state lokal ke remoteMenimpa state remote (overwrite)

Prosedur Teknis Penggunaan

Dalam kondisi darurat, seperti saat backend mengalami masalah sinkronisasi atau saat melakukan migrasi state manual, berikut adalah langkah teknis yang harus dilakukan dengan sangat hati-hati.

1. Mengunduh State (Pull)

Gunakan perintah ini untuk melihat isi state saat ini atau melakukan perbaikan manual pada file JSON state.

terraform state pull > terraform.tfstate

Setelah file diunduh, Anda dapat mengedit file terraform.tfstate menggunakan editor teks. Pastikan format JSON tetap valid sebelum melakukan push kembali.

2. Mengunggah State (Push)

Setelah modifikasi selesai, unggah kembali file tersebut ke backend. Terraform akan meminta konfirmasi sebelum menimpa state yang ada di remote.

terraform state push terraform.tfstate

Peringatan Keamanan dan Integritas

Menggunakan terraform state push secara manual akan menimpa (overwrite) state yang ada di backend tanpa melakukan pengecekan konsistensi (locking) yang ketat seperti pada perintah terraform apply. Hal ini dapat menyebabkan:

  • State Corruption: Jika dua orang melakukan push secara bersamaan, state akan rusak.
  • Resource Drift: Perubahan manual pada file state tidak mencerminkan kondisi infrastruktur nyata di cloud provider.
  • Security Risk: File state seringkali berisi data sensitif seperti password database atau secret key dalam bentuk teks polos (plain text).

Sangat disarankan untuk menggunakan fitur terraform state mv atau terraform state rm untuk memodifikasi state daripada mengedit file JSON secara langsung. Jika Anda harus melakukan sinkronisasi, pastikan tim Anda menggunakan backend yang mendukung state locking seperti S3 dengan DynamoDB atau Terraform Cloud untuk menghindari konflik.