Cara DevOps sebagai budaya mendapatkan momentum, alat seperti Ansible dan Terraform menyaksikan permintaan dan popularitas yang sangat besar.
Kedua alat tersebut dianggap sebagai Infrastruktur sebagai Kode (IaC) solusi yang membantu dalam menyebarkan kode dan infrastruktur. Sementara Ansible bertindak sebagai solusi manajemen konfigurasi yang biasa disingkat “CM”, Terraform adalah alat orkestrasi atau penyediaan layanan.
Perhatikan bahwa ada tumpang tindih dan istilah-istilah ini tidak selalu eksklusif satu sama lain. Inilah yang membingungkan orang dan inilah mengapa saya akan membandingkan Ansible dan Terraform.
Saya akan menjelaskan untuk apa alat-alat ini digunakan, apa pro dan kontranya. Ini akan membantu Anda memutuskan apakah Anda harus menggunakan Ansible atau Terraform dalam proyek Anda.
Ansible dan Terraform:Apa saja alat ini?
Pertama-tama mari kita lihat secara singkat apa saja alat DevOps yang populer ini.
Apa itu Ansible?
Ansible adalah alat otomatisasi TI. Ini dapat mengonfigurasi sistem, menerapkan perangkat lunak, dan melakukan tugas TI yang lebih canggih seperti penerapan berkelanjutan atau pembaruan bergulir tanpa henti.
Apa itu Terraform?
Terraform adalah alat untuk membangun, mengubah, dan membuat versi infrastruktur dengan aman dan efisien. Terraform dapat mengelola penyedia layanan yang ada dan populer serta solusi internal khusus.
Sebelum menyoroti perbedaan antara kedua alat ini, mari kita pahami dulu apa itu Manajemen Konfigurasi dan Orkestrasi.
Manajemen Konfigurasi vs. Orkestrasi
Manajemen konfigurasi adalah serangkaian proses dan prosedur yang memastikan bahwa kondisi infrastruktur yang diinginkan dan konsisten yang mencakup server dan perangkat lunak selalu terpenuhi. Dengan kata lain, ini adalah cara untuk memastikan bahwa sistem bekerja seperti yang diharapkan seiring dengan perubahan yang dilakukan dari waktu ke waktu.
Alat CM memastikan bahwa penerapan TI lebih cepat, bertahap, berulang, terukur, dapat diprediksi, dan mempertahankan status yang diinginkan, yang membawa aset terkelola ke kondisi yang diharapkan.
Alat seperti Ansible digunakan untuk melakukan manajemen konfigurasi.
Dalam hal orkestrasi, Anda dapat menggunakan alat orkestrasi untuk tidak hanya menyediakan server, tetapi juga database, cache, penyeimbang beban, antrian, pemantauan, konfigurasi subnet, pengaturan firewall, aturan perutean, sertifikat SSL, dan hampir semua aspek infrastruktur Anda , terutama infrastruktur cloud publik.
Terraform adalah alat orkestrasi. Ini dirancang untuk menyediakan instance server itu sendiri, meninggalkan tugas mengonfigurasi server tersebut ke alat lain.
Bahasa Prosedural vs. Deklaratif
Alat DevOps dapat dikategorikan sebagai Prosedural atau Deklaratif berdasarkan cara mereka melakukan tindakannya saat diterapkan.
Prosedur menjelaskan aplikasi yang memerlukan langkah-langkah yang tepat untuk ditata dalam kode sedangkan Deklaratif “menyatakan” secara tepat apa yang dibutuhkan, bukan proses untuk mencapai hasil.
Ansible menggunakan gaya prosedural di mana Anda menulis kode yang menentukan, tugas langkah demi langkah untuk mencapai status akhir yang diinginkan.
Sedangkan alat seperti Terraform, AWS CloudFormation semuanya bersifat deklaratif dalam menentukan proses di mana Anda menulis kode yang menentukan status akhir yang Anda inginkan. Misalnya, jika Anda membutuhkan 5 instans EC2, itulah jumlah persisnya yang akan Anda miliki setelah kode dieksekusi.
Ansible dan Terraform:Perbandingan
Mari kita lihat apa saja kelebihan dan kekurangan menggunakan Terraform:
Pro dari Terraform
- Terraform memelihara seluruh infrastruktur cloud dan menyediakan sumber daya tersebut sebagai kode. Itu membuat proses perubahan inkremental menjadi sangat mudah.
- Desain modular.
- Sederhana dan Mudah Dipelajari
- Ini mempertahankan status sumber daya yang dibuat. Semua objek yang dibuat oleh Terraform akan dibuat ulang jika dihapus oleh proses lain.
- Integrasi yang mulus dengan pipeline CI/CD.
- Ini memungkinkan impor sumber daya yang ada untuk membawanya ke kondisi Terraform.
- Saat Anda menjalankan
terraform plan
, ini menunjukkan perubahan yang akan diterapkan pada sumber daya yang sudah ada. Ini memberi para insinyur DevOps wawasan tentang perubahan yang akan mereka buat, terutama jika perubahannya tidak seperti yang diharapkan.
Kontra Terraform
- Tidak ada pengembalian. Anda harus menghancurkan semuanya dan menjalankan ulang skrip tf diperlukan.
- Penanganan kesalahan belum matang. Pada Terraform
v.12.20
ada dua fungsi baru yang tersedia untuk konsumentry()
dancan()
. - Pembuatan skrip Terraform tidak diizinkan langsung dari file negara.
- Alat Terraform masih dalam pengembangan dan melalui banyak rilis beta setiap bulan.
- Tidak semua barang bisa diimpor.
terrafom import
perintah hanya dapat mengimpor satu sumber daya pada satu waktu. Ini berarti Anda belum dapat mengarahkan impor Terraform ke seluruh koleksi sumber daya seperti AWS VPC dan mengimpor semuanya.
Pro dan kontra menggunakan Ansible
Sekarang, mari kita lihat sisi positif dan negatif dari Ansible.
Pro dari Kemungkinan
- Sederhana dan Mudah Dipelajari
- Tanpa agen
- Jadikan seluruh proses penerapan otomatis dan ramah pengembang
- Skrip sederhana dan mudah dibaca berbasis YAML (Ansible Playbook)
- Dukungan modul besar
- Ketersediaan repositori pusat yang disebut galaksi Ansible untuk menemukan dan menggunakan kembali konten Ansible.
Kekurangan dari Kemungkinan
- Kurangnya penawaran UI. AWX yang akhirnya berevolusi menjadi menara Ansible masih memiliki ruang besar untuk perbaikan.
- Tidak ada pemeliharaan negara. Ansible tidak melacak dependensi. Itu hanya menjalankan serangkaian tugas berurutan, berhenti ketika selesai, gagal, atau mengalami kesalahan.
- Tidak sesuai standar dalam hal dukungan OS Windows. Ansible masih dalam tahap awal untuk memperluas dukungan untuk Windows.
- Tidak semudah itu jika Anda harus menulis skrip kompleks dengan logika ekstensif di buku pedoman.
- Dukungan perusahaan belum matang/dapat diandalkan.
- Tidak memiliki pesan kesalahan deskriptif dalam hal men-debug buku pedoman yang rumit.
Terraform atau Ansible? Mana yang lebih baik untuk Anda?
Percayalah, itu bukan pertanyaan sederhana untuk dijawab. Karena itu sangat tergantung pada kebutuhan Anda.
Di dunia nyata, dalam organisasi TI, Anda tidak pernah bergantung pada satu alat, melainkan menggunakan kombinasi alat yang berbeda untuk mencapai hasil yang diinginkan.
Alat Ansible dan Terraform melakukan banyak hal dengan cukup baik. Dan preferensi pribadi saya adalah menggunakan Terraform untuk orkestrasi/penyediaan dan Ansible untuk manajemen konfigurasi.
Terraform memiliki kemampuan terbaiknya saat digunakan untuk orkestrasi infrastruktur (mengelola sumber daya cloud) karena untuk itulah Terraform dibuat.
Ansible, di sisi lain, paling cocok dan dioptimalkan untuk tugas-tugas manajemen konfigurasi (penyediaan perangkat lunak dan mesin). Tugas orkestrasi juga dapat dilakukan dengannya, tetapi itu hanya sebagian dari fungsinya.
Saran saya - gunakan yang terbaik dan awalnya dibuat untuk tugas yang ingin Anda lakukan.
Tapi itu juga bukan aturan praktis karena Anda mungkin menemukan orang yang lebih suka menggunakan satu alat untuk semuanya dan itu berhasil untuk mereka!
Kesimpulan
Kedua alat tersebut memiliki manfaat dan keterbatasannya sendiri saat merancang Infrastruktur sebagai lingkungan Kode untuk otomatisasi. Dan ya, kesuksesan sepenuhnya bergantung pada mengetahui alat mana yang digunakan untuk pekerjaan mana.
Saya harap saya telah membuat beberapa hal di sekitar Ansible dan Terraform lebih jelas untuk Anda. Jika Anda masih memiliki pertanyaan atau saran, beri tahu saya di bagian komentar.