Mencegah dan Memperbaiki Infrastructure Drift di Terraform untuk Azure
By Mirko Peters ·
Pelajari bagaimana infrastructure drift terjadi di Terraform dan Azure, bagaimana perbaikan darurat melalui portal merusak file state, serta cara mendeteksi dan mengoreksi ketidaksesuaian dengan aman.
Automatically translated with AI from the original post. Read the English original

Infrastructure drift adalah salah satu "pembunuh senyap" paling umum sekaligus berbahaya di lingkungan cloud modern. Ketika engineer melakukan penyesuaian manual langsung di portal Azure saat keadaan darurat, tindakan tersebut diam-diam memutus sinkronisasi dengan repositori kode. Panduan komprehensif ini membahas bagaimana drift terjadi, risikonya terhadap file state Anda, serta cara mendeteksi dan memperbaiki ketidaksesuaian secara sistematis tanpa menyebabkan gangguan pada produksi.
Poin Penting
- Infrastructure drift terjadi ketika pembaruan manual di konsol cloud menyimpang dari kode Terraform yang Anda deklarasikan.
- Perbaikan darurat yang dilakukan langsung di produksi melewati version control dan menciptakan kegagalan senyap pada eksekusi plan berikutnya.
- File state Terraform berfungsi sebagai jembatan memori yang membandingkan konfigurasi tertulis Anda, state sebelumnya, dan sumber daya cloud yang sebenarnya.
- Mendeteksi drift sejak dini membutuhkan eksekusi plan otomatis secara rutin serta kebijakan ketat yang melarang perubahan manual portal yang tidak terdokumentasi.
- Mengatasi drift mengharuskan Anda memutuskan apakah lingkungan live dikembalikan sesuai kode atau konfigurasi Anda diperbarui agar sesuai dengan kondisi nyata.
Apa Itu Infrastructure Drift dan Mengapa Itu Terjadi?
Bahkan tim engineering cloud yang paling disiplin pun pada akhirnya terjebak infrastructure drift. Drift didefinisikan sebagai setiap perubahan tidak sah, tidak terdokumentasi, atau darurat pada sumber daya cloud yang mengelola state di luar pipeline otomatis Anda. Bayangkan skenario ketika seorang engineer dihubungi saat ada insiden di tengah malam. Di bawah tekanan, ia masuk ke konsol Azure, menaikkan batas auto-scaling dari lima instance menjadi sepuluh, menyelesaikan masalah, lalu melanjutkan istirahatnya.
Masalahnya, file konfigurasi yang dikelola versi di repositori Anda masih tertulis lima. Lingkungan cloud yang aktif menunjukkan sepuluh. Karena tidak ada yang mendokumentasikan perubahan tersebut atau memperbarui kode, terbentuk kesenjangan besar antara arsitektur yang dirancang dan kondisi nyata. Kesenjangan ini tetap tersembunyi selama berminggu-minggu, hingga seseorang menjalankan plan Terraform rutin untuk pembaruan lain yang sama sekali tidak terkait. Tiba-tiba, output terminal menampilkan peringatan bahwa Terraform berniat menurunkan kembali instance tersebut menjadi lima.
Faktor Manusia dan Tekanan Operasional
Drift jarang disengaja; hampir selalu lahir dari urgensi operasional. Ketika lingkungan produksi gagal, naluri manusia mendorong engineer untuk segera menghentikan masalah dengan alat apa pun yang paling cepat tersedia. Penyediaan melalui point-and-click di portal Azure memang cepat, nyata, dan langsung terlihat. Namun, setiap kali engineer menggunakan portal untuk menambal masalah tanpa mencatatnya dalam kode, mereka menciptakan utang teknis yang harus dibayar kemudian dengan bunga.
Bagaimana State Terraform Mengidentifikasi Ketidaksesuaian
Untuk memahami cara Terraform menangkap drift, Anda perlu memperhatikan mekanisme memorinya: file state. File state Terraform berfungsi sebagai sumber kebenaran utama yang memetakan sumber daya cloud Anda ke file konfigurasi. Saat Anda menjalankan perintah, Terraform tidak begitu saja mengirim file ke cloud. Sebaliknya, ia melakukan perbandingan tiga arah.
Pertama, Terraform membaca apa yang Anda tulis dalam file konfigurasi. Kedua, Terraform memeriksa apa yang tercatat dalam file state pada apply terakhir yang berhasil. Ketiga, Terraform menghubungi API penyedia cloud melalui plugin dan memeriksa apa yang benar-benar ada di langganan Anda saat ini. Ketika ketiga elemen ini tidak cocok, Terraform menyadari bahwa kondisi nyata telah berubah tanpa disadari.
Bahaya Peringatan yang Diabaikan
Selama eksekusi plan, Terraform akan menghasilkan output terperinci yang menunjukkan penambahan, pembaruan, dan penghapusan. Ketika terdapat drift, Anda sering melihat peringatan yang menunjukkan bahwa sebuah resource harus diubah atau bahkan diganti sepenuhnya. Pemula sering panik ketika melihat peringatan tentang penggantian resource paksa. Peringatan ini bukan error. Ini adalah cara Terraform memberi tahu Anda bahwa resource yang sedang berjalan telah berubah hingga tidak dapat dikenali lagi, dan untuk mengembalikannya sesuai dengan kode Anda, resource tersebut harus dihapus lalu dibuat ulang.
Praktik Terbaik untuk Mendeteksi dan Mencegah Drift
Mencegah drift membutuhkan kombinasi pagar pengaman budaya kerja dan kontrol teknis otomatis. Jika deteksi drift sepenuhnya bergantung pada pemeriksaan manual, Anda pasti akan mengalami gangguan produksi yang menyakitkan. Berikut adalah strategi dasar yang digunakan tim untuk menjaga lingkungan cloud tetap selaras:
- Terapkan Akses Hanya Baca: Cabut izin tulis produksi dari pengguna manusia. Pastikan semua perubahan infrastruktur melalui pipeline CI/CD dan tinjauan pull request.
- Jadwalkan Eksekusi Plan Otomatis: Atur pipeline integrasi berkelanjutan untuk menjalankan perintah 'terraform plan' secara rutin tanpa menerapkannya. Tinjau output-nya untuk mencari perubahan yang tidak terduga.
- Pecah File State Monolitik: Bagi lingkungan besar menjadi komponen modular yang lebih kecil. File state yang lebih kecil membuat drift lebih mudah diisolasi, ditinjau, dan diperbaiki.
- Terapkan Penguncian State Jarak Jauh: Pastikan tim Anda menggunakan backend jarak jauh yang aman dengan penguncian state untuk mencegah eksekusi bersamaan merusak catatan memori.
Cara Memperbaiki Drift Saat Terjadi
Ketika Anda menemukan bahwa infrastruktur yang sedang berjalan telah menyimpang dari konfigurasi, Anda dihadapkan pada persimpangan strategis. Ada dua jalur utama untuk perbaikan:
Opsi pertama adalah membiarkan Terraform menimpa lingkungan yang sedang berjalan. Dengan menjalankan 'terraform apply' standar, Anda memaksa Azure untuk kembali ke kondisi yang dijelaskan dalam kode Anda. Jalur ini tepat digunakan ketika drift disebabkan oleh perubahan manual yang tidak sah atau pengaturan debug sementara yang seharusnya tidak ada lagi.
Opsi kedua adalah memperbarui konfigurasi Terraform agar sesuai dengan kondisi nyata. Pilih jalur ini ketika hotfix manual yang dilakukan selama insiden terbukti diperlukan, stabil, dan bermanfaat bagi produksi. Dengan memperbarui kode agar mencerminkan kondisi baru, Anda menutup kesenjangan dan memastikan eksekusi otomatis di masa depan mempertahankan konfigurasi yang diperlukan.
Kesimpulan
Drift infrastruktur adalah tantangan yang tak terhindarkan di lingkungan cloud yang dinamis, tetapi hal ini tidak harus berujung bencana bagi tim Anda. Dengan memahami cara file state Terraform melacak perubahan, menerapkan kontrol akses yang ketat, dan menjadikan deteksi drift sebagai kebiasaan operasional yang rutin, Anda dapat mempertahankan kendali penuh atas arsitektur cloud Anda. Untuk mempelajari lebih dalam mekanisme dasar infrastruktur sebagai kode, penyedia, dan manajemen state, Dengarkan episode lengkapnya dan simak wawasan para ahli untuk meningkatkan strategi otomatisasi cloud Anda.
Pertanyaan Umum
Apa yang menyebabkan drift infrastruktur di Terraform?
Drift disebabkan oleh perubahan di luar jalur Terraform yang dilakukan langsung pada resource cloud melalui portal, perintah CLI, atau skrip yang melewati pipeline Terraform.
Bagaimana Terraform mendeteksi drift konfigurasi selama eksekusi plan?
Terraform membandingkan memori file state yang tersimpan dengan resource cloud yang sebenarnya melalui API penyedia dan file konfigurasi lokal Anda.
Apa yang terjadi jika seseorang mengubah resource Azure yang dikelola Terraform secara manual?
Pada eksekusi plan Terraform berikutnya, Terraform akan menandai ketidaksesuaian tersebut dan berusaha mengembalikan resource agar sesuai dengan kode yang Anda deklarasikan, kecuali konfigurasinya diperbarui.
Haruskah saya memperbarui kode Terraform atau mengembalikan perubahan di portal Azure?
Jika perubahan manual tersebut merupakan hotfix darurat yang sekarang diperlukan untuk stabilitas, perbarui konfigurasi Terraform Anda. Jika perubahan tersebut tidak sah atau tidak disengaja, biarkan Terraform mengembalikannya.