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
| Perintah | Fungsi Utama | Risiko |
|---|---|---|
| terraform state pull | Mengunduh state dari remote ke lokal | Data sensitif terekspos di lokal |
| terraform state push | Mengunggah state lokal ke remote | Menimpa 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.tfstateSetelah 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.tfstatePeringatan 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.