Створення VM для Ubuntu для розподілу


19

Я TA для курсу програмування і маю завдання створити образ віртуальної машини на базі Ubuntu 14.04 LTS з усім необхідним програмним забезпеченням (для розробки C ++ та Python), попередньо встановленого таким чином, щоб усі студенти працювали в одній віртуальній системі, і ми уникаємо боротьби. змусити все працювати на різних машинах та операційних системах. Ми маємо намір використовувати Virtual Box як головне програмне забезпечення VM, оскільки це безкоштовна та доступна крос-платформа.

Наївно, я б просто скористався зображенням диска Ubuntu 14.04 LTS, запустив його у свою віртуальну скриньку, встановив на віртуальний жорсткий диск (VDI), створив обліковий запис «студент» із заздалегідь заданим паролем, встановив усе необхідне програмне забезпечення, закрив вниз віртуальну машину і розподілити файл VDI. Ми попросимо кожного студента імпортувати VDI у віртуальну скриньку, запустити її та налаштувати свій особистий рахунок (або просто скористатися обліковим записом студента за замовчуванням).

  • Чи вищезгадана процедура є життєздатною?
  • На які підводні камені слід звернути увагу? Нам це потрібно, щоб бути дуже дурним. Ми очікуємо, що 80+ студентів і лише чотири ТА, тому ми не можемо надати індивідуальну підтримку.
  • Чи є недоліки у використанні динамічно виділеного віртуального жорсткого диска типу VDI?
  • Чи гаразд для мене, щоб встановити додатки для гостей Virtual Box прямо з кажана чи це робить щось, що стосується хоста?
  • Чи є більш елегантний спосіб впоратися зі створенням облікового запису користувача? В ідеалі, Ubuntu переведе їх через майстра створення облікових записів і змусить їх встановити свої паролі (а також додати їх у файл sudoers) під час першого завантаження зображення. Однак це не є пріоритетним завданням. Я думаю, що обліковий запис за замовчуванням добре.

3
Зауважте, що ви повинні включити пропозицію щодо вихідного коду, оскільки ви розповсюджуєте програмне забезпечення за умовами GPL.
ChrisInEdmonton

@ChrisInEdmonton Добре. Оскільки я не пишу жодного коду, це технічно є модифікацією чи це просто перерозподіл? Чи достатньо вказати студентам на Ubuntu або сторонні джерела, якщо вони запитують (вони цього не хочуть) або я юридично зобов'язаний надавати джерела проактивно? Чи має значення те, що я не публікую зображення, а надаю його обмеженій аудиторії з обмеженим доступом?
Jonas Greitemann

Я просто вкажу вам на GPL, оскільки я не юрист. Тут навряд чи це стане проблемою. :)
ChrisInEdmonton

2
Я б сказав, що вам не доведеться робити це разом із самим зображенням Ubuntu: gnu.org/licenses/… Просто напишіть десь в інструкціях, як завантажити вихідний код.
Маркон

1
Ви можете уважно ознайомитись з політикою щодо інтелектуальної власності та перерозподілу компанії Canonical перед тим, як це зробити. Хоча програмне забезпечення GPL вільне перерозподіляти з джерелом, і майже кожна інша ліцензія, на яку ви знайдете програмне забезпечення, на яке ліцензується типовий дистрибутив Linux, дозволяє перерозподілити їх за розумними умовами, принаймні останнім часом існують певні суперечки щодо IP-політики Canonical.
CVn

Відповіді:


18

Хоча це питання є дещо думкою, заснованою на певній мірі:

Так, ця процедура є життєздатною - я вважаю, що вона здійснить те, що ви шукаєте, і це те, що я робив у минулому з іншими дистрибутивами Linux.

Єдиний справжній підводний камінь - це відстань між дисками… переконайтеся, що у ваших учнівських машин є достатньо місця на диску для розміру віртуального диска. Крім того, переконайтеся, що ви зберігаєте копію в режимі офлайн на принаймні одній машині, щоб ви могли використовувати шаблон / довідковий диск для швидкого відтворення диска, коли студент вбиває свою машину.

Недоліками динамічного диска є те, що хост ОС повинен продовжувати виділяти все більше і більше дискового простору, коли VM зростає з даними / оновленнями. Це має продуктивність, яка часом може бути головним болем - особливо, якщо ви працюєте на малопотужних VM (потужність машини машини мінус потужність, яка використовується для розширення диска, як правило, змушує ВМ трохи відставати). Це також потенційно робить то нерепортаж (не у всіх машинах у вашій лабораторії може бути 100 Гб + раз, коли студент поспілкувався зі своїм віртуальним машиною)

Гостьові аддони не є машинними. Вони в значній мірі встановлені драйверами. Коли ви імпортуєте VM в новий хост, драйвери VM виявлять і налаштувати ваше обладнання для роботи над новим хостом.

Елегантне створення користувачів - не впевнений, можливо, сценарій, який працює при першому запуску, і просить користувача створити новий обліковий запис до того, як сценарій самознищиться? Я виконую копання і повернуся до вас, коли у мене буде запас 5 хвилин.

Сподіваюся, що це хоча б частково допомагає.


2
Дякую, це дуже допомагає. Моя головна турбота - не зіпсувати основи. Не витрачайте занадто багато часу на те, що створює користувач. Це дійсно не так важливо. Я просто подумав, оскільки я все-таки просив, я міг би також запитати, чи є якийсь вбудований механізм, який би впорався з цим, оскільки я припускаю, що це досить поширена проблема.
Jonas Greitemann

1
абсолютно - і цілком можливо, що є вбудоване рішення, тому я хочу його знайти.
Fazer87

13

Відповідаючи саме на ваше запитання, якщо вам потрібно підганяти VM та передавати їм доставлений VM VirtualBox, я рекомендую використовувати Packer для попередньої упаковки VM з усіма необхідними залежностями. Він побудований саме для цієї мети і дозволяє відкручувати зображення з ISO , виконувати будь-яке необхідне налаштування проти цього зображення, а потім створює доступне зображення VirtualBox VM. Це добре для вас і тому, що воно документує саме те, що було зроблено в результаті, якщо ви хочете його відтворити / додати щось до нього. Також ви можете перевірити проект у системі управління джерелами та внести зміни. Ось приклад того, що робиться для початку роботи.

Однак, якщо ви хочете, щоб вони швидко запустилися, я рекомендую використовувати Vagrant і роздавати студентам Vagrantfile, який виконує потрібне резервування для стандартного зображення Ubuntu . Це має ряд переваг:

  • Vagrant працює з VirtualBox і буде обробляти всі важкі частини для студентів, такі як налаштування спільних папок, щоб вони могли легко копіювати файли між VM і хост-машиною, налаштовуючи мережу, щоб дозволити Інтернет отримати доступ до коробки для них тощо. Це також економить час необхідності документування / налагодження проблем з налаштуванням VirtualBox для них.
  • Vagrantfile набагато менше, ніж доставлений VM. Якщо ви хочете щось змінити / додати до VM на півдорозі курсу, вам не доведеться перебудовувати новий VM, просто надайте їм оновлений Vagrantfile.
  • Якщо вони щось зіпсують за межі їх можливостей відремонтувати, вони можуть безболісно знищити / перезапустити VM знову
  • Vagrantfile покаже вашим учням саме те, що було зроблено для ВМ, щоб, коли дістатися до того моменту, коли вони достатньо розуміють, вони змогли побачити, що відбувається під кришкою, і, можливо, навчитися і на цьому.

Ось приклад Vagrantfile, який показує, як виконати деяке резервування на зображенні Ubuntu 14.04.


3
Бродяг та / або пакер - це шлях до цього.
Сенді Чапман

9

Цілком здійсненно. Альтернативою може бути бродяга, лялька, шеф-кухар чи щось подібне, щоб створити VM з нуля, але це ще велика робота з налаштуванням.

Команда розробників на одному з моїх сайтів робить те саме, щоб швидко розробляти нових розробників.
1 заздалегідь встановлений обліковий запис (із правами sudo) на зображенні та короткий документ із інструкцією із кроками, які необхідно виконати для створення свого особистого рахунку.

Зверніть увагу: Вам, швидше за все, потрібен доступ до мережі / Інтернету всередині VM. Це може бути мостиком або NATED на хості. Незалежно від того, який ви вибрали, вам доведеться доручити своїм учням, як налаштувати хостову сторону цього. Просто встановіть NIC всередині VM як пристрій DHCP. Це безпечна відправна точка для більшості конфігурацій, навіть якщо користувач пізніше повинен налаштувати статичну IP-адресу вручну.
Поставлення статичної IP-адреси у віртуальній машині дійсно вимагає неприємностей. Це пов'язано, що вже використовується інший VM, який виходить в Інтернет в тій же локальній мережі ...


3
"Багато роботи над налаштуванням" залежить від того, як часто вам доводиться створювати зображення. Ви повторно направляєте той самий курс у наступному семестрі? Ви, можливо, наступний семестр здаєте подібний курс з іншою мовою? Ви хочете полегшити життя своїм наступникам? У компіляторах C ++ є помилки, які виправляються в пізніших версіях. Новий стандарт C ++ виходить у 2017 році. Пам'ятайте, що програміст - це людина, яка витрачає 2 години на написання програми, щоб виконати завдання за 2 секунди, що зайняло б 2 хвилини вручну. ;-)
Йорг W Міттаг

2
@ JörgWMittag Звичайно, у вас є бал. Але якщо ви не знайомі з Вагрантом і подібними, крива навчання може бути досить крутою / забирає багато часу. Особисто я, мабуть, хотів би вирішити VM для швидкого вирішення цього семестру, а протягом семестру витратив деякий час на розробку іншого рішення для довгострокового підходу.
Тоні

2
Що стосується доступу до мережі, то розподілені VM, ймовірно, матимуть однакові MAC адреси. Це може не бути проблемою з NAT, але це гарна ідея скинути MAC адреси все одно.
користувач1937198

1
@ user1937198 MAC встановлюється VirtualBox / vmdk, а не встановлюється у самому VDI. Якщо ви вкажете та натисніть на новий VM разом у VirtualBox, а потім додайте файл VDI, ви отримаєте свіжий MAC. (Імпортуючи з OVA, вам буде запропоновано повернути або не скинути MAC.) Але ви маєте рацію. Це ще щось, що слід враховувати, і, звичайно, проблема, якщо мережа працює в мостовому зв'язку.
Тоні

1
@SteveBarnes Я особливо погоджуюся з вами останньою фразою: Незалежно від того, наскільки хороша робоча інструкція, люди помиляться, коли дотримуються її. Вони пропускають кроки (або роблять їх у неправильному порядку), роблять помилки в командах, які вони потребують для виконання, або вважають, що знають краще, і відхиляються від сценарію. Якщо він автоматичний (мої перевірки орфографії не впевнені, чи це насправді слово), найкращим підходом є все-таки його автоматизація: немає місця для помилок.
Тонні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.