Tạo một máy ảo Ubuntu để phân phối


19

Tôi là một TA cho một khóa học lập trình và được giao nhiệm vụ tạo ra một hình ảnh máy ảo dựa trên Ubuntu 14.04 LTS với tất cả các phần mềm cần thiết (để phát triển C ++ và Python) để tất cả các sinh viên đều có cùng một hệ thống ảo đang chạy và chúng tôi tránh các cuộc đấu tranh nhận được mọi thứ để làm việc trên nhiều loại máy và hệ điều hành khác nhau. Chúng tôi dự định sử dụng Virtual Box làm phần mềm VM lưu trữ vì nó là nền tảng chéo miễn phí và có sẵn.

Ngây thơ, tôi sẽ chỉ sử dụng hình ảnh đĩa Ubuntu 14.04 LTS, chạy nó trong Hộp ảo của mình, cài đặt nó vào đĩa cứng ảo (VDI), thiết lập tài khoản "sinh viên" với mật khẩu được xác định trước, cài đặt tất cả phần mềm cần thiết, tắt xuống máy ảo và phân phối tệp VDI. Chúng tôi sẽ yêu cầu mỗi sinh viên nhập VDI vào Hộp ảo, chạy nó và thiết lập tài khoản cá nhân của họ (hoặc chỉ sử dụng tài khoản sinh viên mặc định).

  • Là thủ tục trên khả thi?
  • Những cạm bẫy để tìm ra là gì? Chúng tôi cần điều này để được chứng minh khá nhiều đánh lừa. Chúng tôi mong đợi hơn 80 sinh viên và chỉ có bốn TA, vì vậy chúng tôi không thể cung cấp hỗ trợ cá nhân.
  • Có bất lợi nào khi sử dụng ổ cứng ảo loại VDI được phân bổ động không?
  • Tôi có thể cài đặt Bổ sung khách của Virtual Box ngay lập tức không hoặc nó có làm gì cho máy chủ không?
  • Có cách nào thanh lịch hơn để xử lý việc tạo tài khoản người dùng? Lý tưởng nhất là Ubuntu sẽ đưa chúng thông qua trình hướng dẫn tạo tài khoản và yêu cầu chúng đặt mật khẩu (cũng như thêm chúng vào tệp sudoers) trong lần đầu tiên chúng khởi động hình ảnh. Đây không phải là một ưu tiên, mặc dù. Tôi đoán có một tài khoản mặc định là tốt.

3
Lưu ý rằng bạn phải bao gồm một đề nghị cho mã nguồn, vì bạn đang phân phối phần mềm theo các điều khoản của GPL.
ChrisInEd hôm

@ChrisInEdmont Điểm tốt. Vì tôi không tự viết bất kỳ mã nào, đây có phải là một sửa đổi về mặt kỹ thuật hay nó chỉ là phân phối lại? Có đủ để hướng sinh viên đến các nguồn của Ubuntu hoặc bên thứ ba mà họ nên hỏi (họ sẽ không) hoặc tôi có nghĩa vụ pháp lý để cung cấp các nguồn đó một cách chủ động không? Có vấn đề gì khi tôi không xuất bản hình ảnh mà chỉ cung cấp nó cho một đối tượng hạn chế với quyền truy cập hạn chế?
Jonas Greitemann

Tôi sẽ chỉ cho bạn đến GPL vì tôi không phải là luật sư. Nó rất khó trở thành một vấn đề ở đây. :)
ChrisInEd hôm

2
Tôi muốn nói rằng bạn không cần phải làm điều đó cùng với hình ảnh Ubuntu: gnu.org/licenses/NH Chỉ cần viết ở đâu đó trong hướng dẫn cách tải xuống mã nguồn.
Markon

1
Bạn có thể muốn xem xét cẩn thận các chính sách sở hữu trí tuệ và phân phối lại của Canonical trước khi thực hiện việc này. Mặc dù phần mềm GPL được phân phối lại miễn phí với nguồn và hầu hết mọi giấy phép khác bạn sẽ thấy phần mềm được cấp phép trong bản phân phối Linux điển hình cho phép phân phối lại theo các điều khoản hợp lý, ít nhất gần đây đã có một số tranh cãi về chính sách IP của Canonical.
một CVn

Câu trả lời:


18

Trong khi câu hỏi này có phần ý kiến ​​dựa trên một mức độ:

Có, quy trình này khả thi - Tôi tin rằng nó sẽ thực hiện được những gì bạn đang tìm kiếm và đó là điều tôi đã làm trong quá khứ với các bản phân phối linux khác.

Cạm bẫy thực sự duy nhất là xung quanh khoảng cách đĩa ... đảm bảo rằng các máy sinh viên của bạn có đủ dung lượng đĩa để xử lý kích thước của Đĩa ảo. Ngoài ra, đảm bảo rằng bạn giữ một bản sao ngoại tuyến trên ít nhất một máy để bạn có thể sử dụng đĩa mẫu / đĩa tham chiếu để nhanh chóng tạo lại đĩa khi học sinh giết máy của họ.

Nhược điểm của đĩa động là hệ điều hành máy chủ phải tiếp tục phân bổ ngày càng nhiều dung lượng đĩa khi VM phát triển cùng với dữ liệu / cập nhật. Điều này có một chi phí hiệu năng đôi khi có thể gây đau đầu - đặc biệt là nếu bạn đang chạy trên một máy ảo có công suất thấp (Công suất máy chủ trừ đi năng lượng được sử dụng để mở rộng ổ đĩa có xu hướng làm cho máy ảo bị trễ một chút). sau đó không thể truy cập được (không phải tất cả các máy trong phòng thí nghiệm của bạn có thể có 100GB + một khi học sinh gặp rắc rối với VM của họ)

Addons khách không cụ thể máy .. họ khá nhiều trình điều khiển thiết lập. Khi bạn nhập VM vào một máy chủ mới, trình điều khiển VM sẽ phát hiện và điều chỉnh phần cứng của bạn để hoạt động trên máy chủ mới.

Tạo người dùng thanh lịch - không chắc chắn, có thể một tập lệnh chạy trong lần khởi chạy đầu tiên và yêu cầu người dùng tạo một tài khoản mới trước khi tập lệnh tự hủy? Tôi sẽ thực hiện một số hoạt động đào và lấy lại cho bạn khi tôi có 5 phút rảnh rỗi.

Hy vọng điều này ít nhất một phần giúp.


2
Cảm ơn, nó giúp được khá nhiều. Mối quan tâm chính của tôi là không làm hỏng những điều cơ bản. Đừng dành quá nhiều thời gian cho việc tạo người dùng. Nó thực sự không quan trọng. Tôi chỉ nghĩ, vì dù sao tôi cũng đã hỏi, tôi cũng có thể hỏi liệu có một cơ chế tích hợp nào để xử lý nó không, vì tôi cho rằng đó là một vấn đề khá phổ biến.
Jonas Greitemann

1
hoàn toàn - và hoàn toàn có thể có một giải pháp tích hợp, vì vậy tôi muốn tìm nó.
Fazer87

13

Trả lời chính xác câu hỏi của bạn, nếu bạn cần điều chỉnh VM và đưa cho họ một VirtualBox VM có thể phân phối, tôi khuyên bạn nên sử dụng Packer để đóng gói VM với tất cả các phụ thuộc cần thiết. Nó được xây dựng cho mục đích này và cho phép bạn quay một hình ảnh từ ISO , thực hiện bất kỳ việc cung cấp nào bạn muốn đối với hình ảnh đó và sau đó tạo ra một hình ảnh VirtualBox VM có thể phân phối. Điều này cũng tốt cho bạn vì nó ghi lại chính xác những gì đã được thực hiện với khả năng cung cấp trong trường hợp bạn muốn sao chép / thêm một cái gì đó vào nó. Ngoài ra, bạn có thể kiểm tra dự án vào một hệ thống kiểm soát nguồn và thực hiện các thay đổi. Đây là một ví dụ về việc đó được thực hiện để giúp bạn bắt đầu.

Tuy nhiên, nếu bạn muốn chúng chạy nhanh, tôi khuyên bạn nên sử dụng Vagrant và phân phối cho học sinh của mình một Vagrantfile thực hiện việc cung cấp mong muốn mà bạn yêu cầu trên một hình ảnh Ubuntu tiêu chuẩn . Điều này có một số lợi thế:

  • Vagrant hoạt động tốt với VirtualBox và sẽ xử lý tất cả các phần cứng cho sinh viên như thiết lập thư mục dùng chung để họ có thể sao chép tệp dễ dàng giữa VM và máy chủ, định cấu hình mạng để cho phép truy cập internet vào hộp cho họ , v.v ... Điều này cũng giúp bạn tiết kiệm thời gian phải ghi lại / gỡ lỗi các vấn đề thiết lập VirtualBox cho chúng.
  • Vagrantfile nhỏ hơn nhiều so với VM có thể phân phối. Nếu bạn muốn thay đổi / thêm một cái gì đó vào VM trong suốt khóa học, bạn không phải xây dựng lại một VM mới, chỉ cần cung cấp cho họ một Vagrantfile được cập nhật.
  • Nếu họ làm hỏng thứ gì đó vượt quá khả năng sửa chữa của họ, họ có thể phá hủy / tái triển khai VM một cách không đau đớn
  • Một Vagrantfile sẽ cho học sinh của bạn biết chính xác những gì đã làm với VM để khi đến điểm mà chúng hiểu đủ, chúng có thể thấy những gì đang diễn ra dưới mui xe và cũng có thể học hỏi từ đó.

Dưới đây là một ví dụ Vagrantfile chỉ ra cách thực hiện một số việc cung cấp trên hình ảnh Ubuntu 14.04.


3
Vagrant và / hoặc Packer là cách để làm điều này.
Sandy Chapman

9

Hoàn toàn khả thi. Giải pháp thay thế sẽ là Vagrant, Puppet, Chef hoặc một cái gì đó tương tự để xây dựng VM từ đầu nhưng đó là rất nhiều công việc để thiết lập.

Nhóm phát triển trên một trong các trang web của tôi cũng làm như vậy để giúp các nhà phát triển mới nhanh chóng hoạt động.
1 tài khoản được cài đặt sẵn (có quyền sudo) trong hình ảnh và tài liệu hướng dẫn ngắn với các bước họ phải thực hiện để tạo tài khoản cá nhân.

Xin lưu ý: Rất có thể bạn cần truy cập mạng / internet bên trong VM. Đó có thể là cầu nối hoặc NATted trên máy chủ. Bất kể bạn chọn gì, bạn sẽ phải hướng dẫn sinh viên của mình cách cấu hình phía máy chủ của việc này. Chỉ cần thiết lập NIC bên trong VM là thiết bị DHCP. Đó là điểm khởi đầu an toàn cho hầu hết các cấu hình, ngay cả khi người dùng sau đó phải tự cấu hình địa chỉ IP tĩnh.
Đặt một địa chỉ IP tĩnh trong VM thực sự là vấn đề. Nó bị ràng buộc sử dụng bởi một VM khác đang trực tuyến trên cùng một mạng LAN ...


3
Mặc dù vậy, "rất nhiều công việc để thiết lập" phụ thuộc vào tần suất bạn phải tạo hình ảnh. Bạn có đang học cùng khóa học vào học kỳ tới không? Bạn có thể học một khóa học tương tự với một ngôn ngữ khác trong học kỳ tới không? Bạn có muốn làm cho cuộc sống dễ dàng hơn cho những người kế nhiệm của bạn? Trình biên dịch C ++ có lỗi được sửa trong các phiên bản sau. Một tiêu chuẩn C ++ mới xuất hiện vào năm 2017. Hãy nhớ rằng, một lập trình viên là người dành 2 giờ để viết một chương trình để thực hiện một nhiệm vụ trong 2 giây sẽ mất 2 phút bằng tay. ;-)
Jörg W Mittag

2
@ JörgWMittag Tất nhiên, bạn đã có một điểm. Nhưng nếu bạn không quen thuộc với Vagrant và giống như đường cong học tập có thể khá dốc / tốn thời gian. Cá nhân tôi có thể sẽ tìm giải pháp VM cho một giải pháp nhanh chóng trong học kỳ này và trong suốt học kỳ dành một chút thời gian để phát triển thành giải pháp khác cho một cách tiếp cận lâu dài.
Tonny

2
Về truy cập mạng, các máy ảo phân tán có thể sẽ có địa chỉ MAC giống hệt nhau. Nó có thể không phải là một vấn đề với NAT, nhưng dù sao cũng nên đặt lại địa chỉ MAC.
dùng1937198

1
@ user1937198 MAC được đặt bởi VirtualBox / vmdk, không được đặt trong chính VDI. Nếu bạn trỏ và nhấp vào một VM mới trong VirtualBox và sau đó thêm tệp VDI, bạn sẽ nhận được một MAC mới. (Bằng cách nhập từ OVA, bạn sẽ được hỏi về thời gian hoặc không thiết lập lại MAC.) Nhưng bạn đã đúng. Đó là một cái gì đó khác để xem xét và chắc chắn là một vấn đề nếu mạng được chạy trong cầu nối.
Tonny

1
@SteveBarnes Tôi đặc biệt đồng ý với bạn cụm từ cuối cùng: Cho dù hướng dẫn làm việc tốt đến đâu, mọi người sẽ hiểu sai khi họ tuân theo nó. Họ bỏ qua các bước (hoặc thực hiện chúng theo thứ tự sai), mắc lỗi chính tả trong các lệnh họ cần thực hiện hoặc họ nghĩ rằng họ biết rõ hơn và đi chệch khỏi tập lệnh. Nếu nó có thể tự động hóa (trình kiểm tra chính tả của tôi không chắc đó có thực sự là một từ không) thì cách tiếp cận tốt nhất vẫn là tự động hóa nó: Không có chỗ cho lỗi.
Tonny
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.