Câu hỏi Tại sao tôi nên sử dụng Vagrant thay vì chỉ VirtualBox?
Tôi đã sử dụng VirtualBox trong nhiều năm để tạo ra một môi trường phát triển.
Rất nhiều đồng nghiệp của tôi đang nói về Vagrant và nhiều người dường như rất vui mừng về nó nhưng tôi dường như không thể hiểu được lợi ích của nó .. có vẻ như tôi là một loạt các lệnh mới để học để làm điều tương tự những gì tôi đã làm với Virtualbox.
Với VirtualBox, tôi cài đặt và cấu hình một môi trường hoàn hảo, sau đó tôi có thể đóng gói nó như là một OVA hoặc bất cứ điều gì và chia sẻ nó với người dùng văn phòng khác. Bạn có thể chụp nhanh trong VirtualBox nếu xảy ra sự cố.
Con rối và đầu bếp không thực sự là một phần của Vagrant, chúng là điều riêng của họ phải không?
Vì vậy, có, những lợi ích đặc biệt không Vagrant cung cấp trên VirtualBox ngày của riêng mình?
211
2018-04-17 14:39
gốc
Các câu trả lời:
Đây là một câu hỏi lớn, vì vậy tôi sẽ chia nó thành hai phần.
Vagrant
Vagrant được sử dụng để thiết lập một hoặc nhiều máy ảo bằng cách:
- Nhập hình ảnh được tạo trước (được gọi là "hộp")
- Đặt cài đặt dành riêng cho máy ảo (địa chỉ IP, tên máy chủ, chuyển tiếp cổng, bộ nhớ, v.v.)
- Chạy phần mềm cung cấp như Puppet hoặc Chef
Lưu ý rằng nó không cài đặt phần mềm hoặc cài đặt máy quá tải máy ảo và cài đặt VirtualBox. Hãy nghĩ về nó như một công cụ tạo kịch bản cho VirtualBox.
Dưới đây là một số lý do tôi đã thấy khi sử dụng Vagrant trên VirtualBox.
1. Thiết lập mạng đa máy ảo một cách dễ dàng
Hầu hết các nội dung của người sử dụng năng lượng Vagrant mà tôi đã đọc đã về việc thiết lập nhiều máy ảo cùng một lúc. Vagrant cung cấp cho bạn một tệp cấu hình duy nhất để thiết lập các tệp này, cho phép bạn khởi chạy tất cả chúng bằng một lệnh.
Giả sử bạn đã cấu hình ba máy ảo để kết nối với nhau bằng cách sử dụng các IP tĩnh trên mạng con 192.168.1. *. Bạn thấy mình ở một vị trí đã sử dụng subnet đó để phát địa chỉ IP và các máy ảo của bạn bây giờ xung đột. Với Vagrant, bạn chỉ cần chỉnh sửa Vagrantfile và tải lại các máy ảo, trong khi với VirtualBox bạn phải mở các thiết lập cho mỗi máy ảo, nếu không khởi động mỗi máy ảo và thay đổi chúng bên trong.
2. Kiểm soát nguồn
Bằng cách đặt các thiết lập trong một tập tin văn bản, nó cho phép cấu hình được đặt dưới sự kiểm soát nguồn. Đã thực hiện một số thay đổi vào tuần trước và vô tình phá vỡ hình ảnh? Chỉ cần hoàn nguyên các thay đổi và tải lại VM. Bạn có thể thực hiện điều này với ảnh chụp nhanh VirtualBox, nhưng nó sẽ chiếm nhiều không gian hơn chỉ là một Vagrantfile.
3. Nền tảng khác nhau
Có một số lượng lớn các hộp có sẵn tại các trang web như http://vagrantbox.es. Điều này cho phép bạn thử các hệ điều hành hoặc bản phân phối khác nhau, áp dụng cùng một điều khoản để thiết lập các môi trường tương tự. Điều này có thể giúp kiểm tra hoặc thêm hỗ trợ cho các nền tảng mới và sẽ tốn thời gian chỉ bằng VirtualBox.
Có rất nhiều đối số để sử dụng phần mềm cấp phép, cũng như sử dụng ảnh chụp nhanh. Để thảo luận thêm, tôi sẽ chỉ cho bạn bài viết tuyệt vời của Stephen Nelson-Smith Làm thế nào để xây dựng 100 máy chủ web trong một ngày.
145
2018-04-27 05:41
Ngoài câu trả lời tuyệt vời được đưa ra bởi Adam, Vagrant liên kết mọi thứ với nhau. Mặc dù Chef và Puppet (và các kịch bản lệnh Salt và shell và bất kỳ điều khoản nào khác mà bạn muốn sử dụng) là những thứ riêng biệt, Vagrant liên kết tất cả với nhau và làm cho nó hoạt động chỉ với một vagrant up
.
Đó là một lệnh sẽ
- chỉ cần khởi động VM nếu đó là tất cả những gì cần thiết, nhưng nó cũng sẽ
- tạo hộp từ hộp cơ sở đã chỉ định của bạn nếu hộp đó cũng chưa được thực hiện, nhưng nếu bạn thậm chí không có hộp cơ sở trên máy, nó sẽ là cái đầu tiên
- lấy nó từ URL của nó và tải nó về máy của bạn.
Bạn không cần phải suy nghĩ về tất cả những điều đó. Giả sử bạn đang chuyển sang một dự án khác, một dự án bắt đầu bởi một đồng nghiệp. Bạn chỉ cần kiểm tra mã từ repo của bạn, và chạy vagrant up
, đừng lo lắng về việc tải xuống ISO hoặc cài đặt bất kỳ thứ gì hoặc tự hỏi phiên bản nào bạn cần sử dụng cho ứng dụng khách cụ thể đó hoặc liệu bạn có bản sao VM đã có mọi thứ bạn cần hay không.
Bạn thậm chí không cần phải lo lắng về việc liệu họ đã thiết lập mọi thứ bằng cách sử dụng Chef hay Puppet hay chỉ là các kịch bản lệnh shell. (Được rồi, vì vậy bạn có thể cần phải làm bundle install
hoặc nói cách khác, hãy đảm bảo rằng bạn đã cài đặt mọi thứ, nhưng vẫn không phải là vấn đề lớn.)
Bằng cách buộc tất cả mọi thứ lại với nhau, và cung cấp một giao diện thống nhất cho tất cả, nó có thể làm cho tất cả, nhưng các trường hợp sử dụng đơn giản dễ dàng hơn nhiều. Lúc đầu, bạn có thể cảm thấy như bạn đang học lại một cách mới để làm những gì bạn đang làm, nhưng khi bạn sử dụng Vagrant sâu hơn, bạn sẽ khám phá ra bạn có thể làm được nhiều hơn với nỗ lực ít hơn nhiều. Nó sẽ rất đáng để đầu tư thời gian ban đầu.
25
2018-01-09 17:56
Khả năng tích hợp đầu bếp hoặc con rối với việc cung cấp VM là chìa khóa. Hầu hết những người sử dụng Vagrant sẽ nói với bạn rằng họ chạy 'cung cấp vagrant' và thỉnh thoảng 'vagrant reload' nhiều hơn thường xuyên hơn 'vagrant up' hoặc 'vagrant destroy'. Những nhiệm vụ này cho thấy công việc thực tế không phải là trong các máy quay lên / xuống mà là 'quản lý' chúng sau khi thực tế.
Để đặt ra một câu hỏi tốt hơn (đặt ra bởi người dùng đầu bếp thành thạo, dù sao) có thể là lý do tại sao sử dụng Vagrant và không phải con dao với các plugin thích hợp (sẽ nhận được để virtualbox plugin, trong một thời điểm)? Ví dụ, việc chuyển các giá trị đối số được lưu trữ trong một túi dữ liệu đến một plugin con dao là (cách) thông minh hơn, linh hoạt và dễ quản lý hơn là tung hứng một Vagrantfile khổng lồ. Tôi thường định nghĩa các tài nguyên 'động' của tôi như # CPU, dung lượng bộ nhớ, hệ điều hành để triển khai, tên máy chủ, IP, tuyến đường, v.v., trong (các) thẻ dữ liệu đầu bếp như vậy mà tôi không cần phải thay đổi công thức của mình; ). Chỉnh sửa một databag thông qua giao diện web đầu bếp là một nhiệm vụ nhập dữ liệu thực sự dễ dàng tôi có thể cung cấp cho các nhà khai thác nhỏ nhất. Với Vagrantfile, mã modiyfing mãi mãi của bạn và tin tưởng rằng nó hay không - mã break - mà khá nhiều đảm bảo bạn sẽ không được đưa ra những thay đổi đơn giản cho nhân viên hoạt động, bao giờ hết.
Ngoài con dao thực tế chưa có một plugin cho VirtualBox (mặc dù tôi hình dung một cái trong tương lai không xa), đã có các plugin cho hầu hết các sản phẩm ảo hóa 'doanh nghiệp', bao gồm vmware, xenserver và chỉ về mọi 'đám mây' chính nhà cung cấp, là tốt. Điều này có nghĩa là con dao vượt trội so với những gì Vagrant cung cấp nếu / khi bạn đã sẵn sàng di chuyển ra ngoài VirtualBox. Hiện tại, cộng đồng Chef có vẻ vui khi cho phép người dùng VirtualBox cùng với Vagrant bằng cách không tích hợp api ảo cho một plugin con dao. Có một plugin không có con dao, không cho phép sử dụng các túi dữ liệu để truyền các đối số. Tuy nhiên, nó vẫn yêu cầu phần mềm vagrant và nó là nguyên khối Vagrantfile để hoạt động.
Vì vậy, tôi sẽ đi ra ngoài một chi và nói Vagrant chắc chắn là không 'tốt hơn' hơn Chef với con dao; nhưng cần thiết (cho bây giờ) nếu bạn nhấn mạnh vào VirtualBox và có lẽ 'dễ dàng hơn' quản lý đầu bếp với túi dữ liệu, miễn là bạn có một môi trường khá đơn giản để quản lý.
8
2018-03-21 14:13
Dưới đây là hai trường hợp sử dụng dành cho nhà phát triển khác mà đơn giản hóa âm đạo (trên VirtualBox "đơn giản"). Tôi không thấy các trường hợp sử dụng này được gọi cụ thể trong các câu trả lời trước đó.
Vagrant giúp với mục đích giữ cho các nền tảng phát triển và sản xuất càng gần nhau càng tốt. Trong một thế giới lý tưởng, bạn sẽ cung cấp môi trường sản xuất với các kịch bản lệnh THE SAME được sử dụng để cung cấp máy ảo Vagrant, giảm thiểu những bất ngờ khi triển khai.
Kiểm tra tích hợp và tích hợp liên tục: Vagrant rất dễ kiểm soát từ các thử nghiệm, và do đó toàn bộ ngăn xếp nhiều máy có thể được điều khiển dễ dàng từ các công cụ như Jenkins khi chạy thử nghiệm.
Có, "đồng bằng" VirtualBox có thể được sử dụng ở đây quá - nhưng các quy ước được sử dụng bởi vagrant làm cho nó đơn giản hơn để thiết lập các kịch bản này lên.
8
2018-06-20 11:19
Vagrant tóm tắt các máy ảo để nó cho phép bạn dễ dàng chuyển đổi các cài đặt máy ảo. Bạn có thể chuyển từ Hộp ảo sang AWS hoặc Digital Ocean. Nó giống như sử dụng SQL thay vì ngôn ngữ truy vấn cơ sở dữ liệu cụ thể.
Vagrant cho phép các nhà phát triển thiết lập môi trường của họ một cách nhanh chóng chỉ với một lệnh và nó chính xác giống như một người khác. Điều này là quan trọng trong các công ty lớn, nơi các nhà phát triển đến và đi thường xuyên. Nó có thể giảm thời gian để thiết lập từ 3 ngày đến 1 giờ.
+ Adam nói gì.
(Tôi vẫn chưa tìm thấy một cách sử dụng cho Chef hay Puppet mặc dù ...)
0
2018-03-29 01:58