Saya telah menggunakan VirtualBox selama bertahun-tahun untuk menciptakan lingkungan pengembangan.
Banyak kolega saya berbicara tentang Vagrant dan banyak orang tampak sangat bersemangat tentang hal itu tetapi saya sepertinya tidak dapat memahami manfaatnya. Sepertinya bagi saya ini adalah serangkaian perintah baru yang harus dipelajari untuk melakukan hal yang sama. hal yang saya lakukan dengan Virtualbox.
Dengan VirtualBox, saya menginstal dan mengkonfigurasi lingkungan dengan sempurna, maka saya dapat mengemasnya sebagai OVA atau apa pun dan membaginya dengan pengguna kantor lainnya. Anda dapat mengambil snapshot dalam VirtualBox jika terjadi kesalahan.
Wayang dan koki bukan bagian dari Vagrant, itu urusan mereka sendiri, bukan?
Jadi ya, apa manfaat khusus yang ditawarkan Vagrant atas VirtualBox itu sendiri?
sumber
Jawaban:
Ini adalah pertanyaan besar, jadi saya akan memecahnya menjadi tiga bagian.
Gelandangan
Vagrant digunakan untuk mengatur satu atau lebih mesin virtual dengan:
Perhatikan bahwa itu tidak menginstal perangkat lunak atau mengatur mesin melewati memuat VM dan pengaturan pengaturan VirtualBox. Anggap saja sebagai mesin scripting untuk VirtualBox.
Berikut adalah beberapa alasan yang saya lihat untuk menggunakan Vagrant lebih dari sekadar VirtualBox.
1. Mengatur Jaringan Multi-VM dengan Mudah
Sebagian besar konten pengguna daya Vagrant yang saya baca adalah tentang mengatur beberapa VM secara bersamaan. Vagrant memberi Anda satu file konfigurasi untuk mengatur ini, memungkinkan Anda untuk meluncurkan semuanya dengan satu perintah.
Katakanlah Anda telah mengkonfigurasi tiga VM untuk saling terhubung menggunakan IP statis pada subnet 192.168.1. *. Anda menemukan diri Anda di lokasi yang sudah menggunakan subnet itu untuk membagikan alamat IP, dan VM Anda sekarang bertentangan. Dengan Vagrant, Anda cukup mengedit Vagrantfile dan memuat ulang VM, sedangkan dengan VirtualBox Anda harus membuka pengaturan untuk setiap VM, jika tidak boot masing-masing VM dan ubah di dalamnya.
2. Kontrol Sumber
Dengan meletakkan pengaturan dalam file teks, ini memungkinkan konfigurasi diletakkan di bawah kendali sumber. Membuat beberapa perubahan minggu lalu dan secara tidak sengaja merusak gambar? Kembalikan perubahan dan muat ulang VM. Anda dapat melakukan ini dengan snapshot VirtualBox, tetapi akan memakan banyak ruang lebih dari sekedar Vagrantfile.
3. Berbagai Platform
Ada sejumlah besar kotak yang tersedia di situs-situs seperti http://vagrantbox.es . Ini memungkinkan Anda untuk mencoba berbagai OS atau distribusi, menerapkan ketentuan yang sama untuk mengatur lingkungan yang sama. Ini dapat membantu dengan pengujian atau menambahkan dukungan ke platform baru, dan akan memakan waktu hanya menggunakan VirtualBox.
Ada banyak argumen untuk menggunakan perangkat lunak pencadangan, serta menggunakan snapshot gambar. Untuk diskusi tambahan, saya akan mengarahkan Anda ke artikel bagus Stephen Nelson-Smith Bagaimana Membangun 100 Server Web dalam Sehari .
sumber
vmrun
perintah yang ditawarkan oleh VMware bahkan perubahan alamat IP atau menjalankan skrip di dalam mesin tamu!vmrun
untuk mengontrolnya. Saya selalu menggunakan VirtualBox, dan karenanya tidak memiliki pengalaman dengan backend VMWare.VboxManage
perintahnya? virtualbox.org/manual/ch08.html Cukup banyak semua yang Anda sebutkan dapat dibuat sebagai skrip dengan meneruskan ip / parameter tertentu kevboxmanage controlvm
atau perintah serupa dalam skrip shell dan kemudian kontrol versi itu .. Jadi, bagaimana caravagrant
memperbaikinyavirtualbox
?Selain jawaban luar biasa yang diberikan oleh Adam, Vagrant mengikat semuanya bersama-sama. Meskipun Chef dan Puppet (dan skrip Garam dan cangkang dan penyedia apa pun lainnya yang ingin Anda gunakan) adalah hal-hal yang terpisah, Vagrant mengikat semuanya dan membuatnya bekerja hanya dengan a
vagrant up
.Perintah yang satu itu akan
Anda tidak harus memikirkan semua itu. Katakanlah Anda beralih ke proyek lain, yang dimulai oleh rekan kerja. Anda hanya memeriksa kode dari repo Anda, dan menjalankan
vagrant up
, tidak khawatir tentang mengunduh ISO atau menginstal apa pun, atau bertanya-tanya versi distro mana yang perlu Anda gunakan untuk klien tertentu, atau apakah Anda memiliki salinan VM yang sudah memiliki segalanya kamu membutuhkan.Anda bahkan tidak perlu khawatir tentang apakah mereka telah mengatur semuanya menggunakan Chef atau Wayang atau hanya skrip shell. (Oke, jadi Anda mungkin perlu melakukan
bundle install
atau memastikan Anda sudah menginstal semuanya, tetapi masih bukan masalah besar.)Dengan mengikat semuanya bersama-sama, dan menyediakan antarmuka yang terpadu untuk semuanya, itu dapat membuat semua kasus penggunaan yang paling sederhana menjadi jauh lebih mudah. Pada awalnya Anda mungkin merasa seperti baru mempelajari kembali cara baru untuk melakukan apa yang sudah Anda lakukan, tetapi begitu Anda semakin dalam menggunakan Vagrant, Anda akan menemukan bahwa Anda dapat melakukan lebih banyak lagi dengan lebih sedikit usaha. Ini akan sepadan dengan investasi waktu awal.
sumber
Kemampuan untuk mengintegrasikan koki atau boneka dengan penyediaan VM adalah kuncinya. Sebagian besar pengguna Vagrant akan memberi tahu Anda bahwa mereka menjalankan 'ketentuan gelandangan' dan kadang-kadang 'gelandangan memuat kembali lebih sering daripada' gelandangan naik 'atau' menghancurkan gelandangan '. Tugas-tugas ini menunjukkan pekerjaan yang sebenarnya bukan dalam memutar / menurunkan VM tetapi 'mengelola' mereka setelah fakta.
Untuk mengajukan pertanyaan yang lebih baik (diajukan oleh pengguna Chef yang mahir, mungkin) mungkin mengapa menggunakan Vagrant dan bukan pisau dengan plugin yang sesuai (sebentar lagi akan menuju plugin virtualbox)? Misalnya, meneruskan nilai argumen yang disimpan dalam kantung data ke plugin pisau (cara) lebih cerdas, fleksibel dan mudah dikelola daripada menyulap satu Vagrantfile raksasa. Saya biasanya mendefinisikan sumber daya 'dinamis' saya seperti # CPU, jumlah memori, yang digunakan oleh OS, nama host, IP, rute, dll, dalam chef databag sehingga saya tidak perlu terus mengubah resep saya; - ). Mengedit databag melalui antarmuka web Chef adalah tugas entri data yang sangat mudah yang dapat saya berikan kepada sebagian besar operator junior. Dengan Vagrantfile, kode modiyfing Anda selamanya dan percaya atau tidak - istirahat kode - yang cukup banyak menjamin Anda TIDAK akan menyerahkan perubahan sederhana kepada staf Operasi,
Selain dari pisau fakta belum memiliki plugin untuk virtualbox (meskipun saya membayangkan satu di masa depan tidak terlalu jauh), sudah ada plugin untuk sebagian besar produk virtualisasi 'perusahaan', termasuk vmware, xenserver dan hampir semua 'cloud' utama penyedia layanan, juga. Ini berarti pisau jauh lebih unggul dari yang ditawarkan Vagrant jika / ketika Anda siap untuk bergerak melampaui virtualbox. Untuk saat ini, komunitas Chef tampaknya senang membiarkan pengguna virtualbox pincang bersama dengan Vagrant dengan tidak mengintegrasikan virtualbox apis untuk plugin pisau. Ada plugin pisau-gelandangan yang memungkinkan penggunaan tas data untuk menyampaikan argumen. Tapi, itu masih membutuhkan perangkat lunak gelandangan dan itu Vagolonef monolitik berfungsi.
Jadi, saya akan mengambil risiko dan mengatakan Vagrant jelas TIDAK 'lebih baik' dari pada Chef dengan pisau; tetapi perlu (untuk saat ini) jika Anda bersikeras pada virtualbox dan mungkin 'lebih mudah' daripada mengelola koki dengan tas data, asalkan Anda memiliki lingkungan yang cukup sederhana untuk dikelola.
sumber
Berikut adalah dua lagi kasus penggunaan pengembang yang menyimpang gelandangan (lebih dari "biasa" VirtualBox). Saya tidak melihat kasus penggunaan ini dipanggil secara khusus dalam jawaban sebelumnya.
Vagrant membantu dengan tujuan menjaga platform pengembangan dan produksi sedekat mungkin satu sama lain. Di dunia yang ideal, Anda akan menyediakan lingkungan produksi dengan script SAMA SAMA yang digunakan untuk menyediakan Vagrant VM, meminimalkan kejutan pada waktu penyebaran.
Tes integrasi dan integrasi berkelanjutan: Vagrant mudah dikendalikan dari tes, dan karenanya seluruh tumpukan multi-mesin dapat dengan mudah dikontrol dari alat-alat seperti Jenkins saat melakukan tes berjalan.
Ya, VirtualBox "biasa" dapat digunakan di sini juga - tetapi konvensi yang digunakan oleh gelandangan membuatnya lebih mudah untuk mengatur skenario ini.
sumber
Vagrant abstrak mesin virtual sehingga memungkinkan Anda untuk dengan mudah beralih implementasi mesin virtual. Anda dapat beralih dari Virtual Box ke AWS atau Digital Ocean. Ini seperti menggunakan SQL alih-alih bahasa kueri khusus database.
Vagrant memungkinkan pengembang untuk mengatur lingkungan mereka dengan cepat hanya dengan satu perintah dan itu persis sama dengan yang lainnya. Ini penting di perusahaan besar tempat pengembang sering datang & pergi. Itu dapat mengurangi waktu untuk mengatur dari 3 hari menjadi 1 jam.
+ Apa yang dikatakan Adam.
(Aku masih belum menemukan kegunaan untuk Chef atau Wayang ...)
sumber