Keadaan Terraform
Status infrastruktur kita saat ini, yang mencakup informasi tentang sumber daya yang kita definisikan dalam kode kita, dicatat sebagai status Terraform. Terraform menggunakan status ini untuk menentukan perubahan yang diperlukan untuk membawa infrastruktur kita ke status yang diinginkan saat perintah seperti Terraform 'apply' dijalankan. Setelah menjalankan perubahan (buat, ubah, dan hapus), Terraform memperbarui file status dengan status baru infrastruktur Anda.
Untuk memahami konsep dengan jelas, mari kita ambil contoh:
sumber 'file_lokal' 'Yohanes' {
nama file = '/home/John.txt'
konten = 'Saya suka hewan peliharaan'
}
Di sini, kami membuat file Terraform bernama 'main.tf'. Di dalamnya ada resource bertipe local_file bernama “John” dengan dua atribut: nama file dan konten.
Jenis sumber daya local_file digunakan untuk membuat file di sistem file lokal mesin tempat Terraform berjalan. Dalam hal ini, file dibuat dengan nama 'John.txt' di direktori '/home', dan konten file tersebut adalah 'I love pets'.
Sekarang, mari kita lakukan alur Terraform – Terraform init, plan, dan apply. Saat kami menjalankan perintah 'menerapkan' Terraform di proyek kami untuk pertama kalinya, Terraform secara otomatis membuat file status yang disebut 'terraform.tfstate' di direktori root proyek Terraform kami. Ini mencakup semua informasi tentang status infrastruktur kami saat ini dalam format JSON.
Berikut adalah file status untuk sumber daya yang kami buat:
Sekarang, katakanlah kita ingin menghapus resource saat ini dan membuat resource lain dengan tipe random_pet bernama 'my-pet' dengan atribut - awalan, panjang, dan pemisah.
sumber 'random_pet' 'peliharaanku' {awalan = 'Tn'
panjang = '1'
pemisah = '.'
}
Di sini, kami menghapus sumber daya local_file dan menambahkan sumber daya random_pet. Keadaan yang kita inginkan adalah hanya memiliki sumber daya random_pet. Mari kita jalankan init Terraform, rencanakan, dan terapkan perintah.
Seperti yang ditunjukkan pada ilustrasi sebelumnya, ketika kita menjalankan perintah 'rencana' Terraform, ini menunjukkan tindakan yang dilakukan Terraform untuk mencapai keadaan yang diinginkan. Saat kami menjalankan perintah 'terapkan' Terraform, sumber daya 'hewan peliharaan saya' dibuat, dan sumber daya 'John' dihapus. Juga, file negara diperbarui dengan menghancurkan metadata dari sumber local_file dan menambahkan metadata dari sumber random_pet.
Berikut adalah konten dari file status yang diperbarui:
Bagaimana Terraform the Manage State Bekerja?
Menggunakan backend, Terraform mengelola status. Backend adalah layanan jarak jauh atau sistem file lokal yang digunakan Terraform untuk menyimpan dan mengambil data status. Bergantung pada kebutuhan kami, kami dapat memilih backend yang sesuai.
Terraform mendukung beberapa backend bawaan termasuk lokal, Amazon S3, HashiCorp Consul, Vault, dan Azure Storage. Kami juga dapat membuat backend khusus jika tidak ada opsi bawaan yang memenuhi kebutuhan.
Pada contoh sebelumnya, file status disimpan di backend lokal. Namun menyimpannya di backend jarak jauh adalah praktik terbaik karena mengundang kolaborasi dan meningkatkan keamanan.
Pentingnya Manajemen Negara
Manajemen status dalam alat seperti Terraform sangat penting karena poin-poin utama berikut:
Tentukan Status Infrastruktur Anda Saat Ini
File status memberikan gambaran akurat tentang sumber daya yang ada dan atributnya saat ini. Data ini sangat penting dalam memahami infrastruktur kami dan memastikannya dalam kondisi yang diinginkan.
Lacak Perubahan Infrastruktur dari Waktu ke Waktu
Setiap kali kami menerapkan perubahan menggunakan Terraform, file status diperbarui untuk mencerminkan status baru infrastruktur kami. Hal ini memungkinkan kami untuk melacak bagaimana infrastruktur kami telah berkembang dan memberikan jejak audit dari semua perubahan.
Otomatisasi
Menentukan status infrastruktur yang Anda inginkan dalam kode memungkinkan kami mengotomatiskan pembuatan dan pengelolaan infrastruktur kami. Manajemen negara menjamin bahwa infrastruktur kami tetap diinginkan, bahkan jika perubahan dilakukan seiring waktu.
Kelola Ketergantungan
Dengan Terraform, kita dapat menentukan hubungan antara sumber daya di file konfigurasi kita, dan Terraform menggunakan file status untuk memastikan bahwa hubungan tersebut dipertahankan. Ini memastikan bahwa perubahan pada satu sumber daya tidak memengaruhi sumber daya lain secara tidak sengaja.
Pemulihan bencana
Jika terjadi kegagalan atau pemadaman, kita dapat menggunakan file status untuk membuat ulang infrastruktur dalam status yang diketahui. Hal ini dapat membantu meminimalkan downtime dan memastikan bahwa infrastruktur kami dipulihkan dengan cepat dan efisien.
Praktik Terbaik untuk Pengelolaan Negara yang Efektif
Berikut adalah beberapa tips yang dapat kita ikuti untuk mengelola negara secara efektif:
Gunakan Backend Jarak Jauh
Backend jarak jauh memberikan beberapa keuntungan dibandingkan backend lokal. Ini memungkinkan banyak pengguna untuk bekerja pada infrastruktur yang sama dan mereka juga menawarkan keamanan dan keandalan yang lebih baik daripada backend lokal.
Aktifkan Versi
Dengan membuat versi file status, kami dapat melacak perubahan dari waktu ke waktu dan memutar kembali ke versi sebelumnya jika perlu. Selain itu, pembuatan versi menyediakan jejak audit dan membantu memastikan bahwa perubahan didokumentasikan dengan tepat.
Gunakan Mekanisme Penguncian
Kami dapat menggunakan mekanisme penguncian yang membantu mencegah konflik saat banyak pengguna bekerja pada infrastruktur yang sama. Terraform mendukung beberapa alat penguncian termasuk DynamoDB, Consul, dan S3.
Cadangkan File Status Anda
Kami dapat memulihkan dari kerusakan data jika kami mencadangkan file negara secara teratur. Kami harus menyimpan cadangan di lokasi yang aman dan mengikuti persyaratan kepatuhan yang relevan.
Kesimpulan
Kami memiliki pengantar singkat tentang IaC dan Terraform sambil memahami file status dan mengelolanya melalui contoh. Memahami bagaimana kondisi Terraform bekerja dapat membantu kita menghindari jebakan umum dan memastikan bahwa infrastruktur kita tetap diinginkan. Dengan mengikuti praktik terbaik untuk mengelola status, kita dapat menggunakan Terraform dengan percaya diri dan efektif.