Создание виртуальной машины Ubuntu для распространения

19

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

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

  • Является ли вышеуказанная процедура жизнеспособной?
  • На какую ловушку стоит обратить внимание? Нам нужно, чтобы это было в значительной степени безошибочно. Мы рассчитываем на 80+ студентов и всего четыре ТА, поэтому мы не можем предоставить индивидуальную поддержку.
  • Есть ли недостатки в использовании динамически выделяемого виртуального жесткого диска VDI-типа?
  • Это нормально для меня, чтобы установить гостевые дополнения Virtual Box сразу, или это делает что-то для конкретного хоста?
  • Есть ли более элегантный способ обработки учетной записи пользователя? В идеале, Ubuntu может использовать их при помощи мастера создания учетной записи и устанавливать их пароли (а также добавлять их в файл sudoers) при первой загрузке образа. Это не приоритет, хотя. Я думаю, с учетной записью по умолчанию это хорошо.
Йонас Грайтманн
источник
3
Обратите внимание, что вы должны включить предложение для исходного кода, поскольку вы распространяете программное обеспечение в соответствии с условиями GPL.
ChrisInEdmonton
@ChrisInEdmonton Хороший вопрос. Поскольку я сам не пишу никакого кода, это технически модификация или это просто перераспределение? Достаточно ли указывать учащимся на источники Ubuntu или сторонние источники, если они спросят (они не будут), или я по закону обязан предоставлять источники заблаговременно? Имеет ли значение, что я не публикую изображение, а скорее предоставляю его ограниченной аудитории с ограниченным доступом?
Йонас Грайтманн
Я просто укажу вам GPL, потому что я не юрист. Это вряд ли станет проблемой здесь. :)
ChrisInEdmonton
2
Я бы сказал, что вам не нужно делать это вместе с самим образом Ubuntu: gnu.org/licenses/… Просто напишите где-нибудь в инструкции, как загрузить исходный код.
Маркон
1
Вы можете внимательно ознакомиться с политикой Canonical в отношении интеллектуальной собственности и распространения, прежде чем делать это. В то время как программное обеспечение GPL можно свободно распространять вместе с исходным кодом, и почти любая другая лицензия, на которую вы найдете программное обеспечение, на которое распространяется лицензия в типичном дистрибутиве Linux, позволяет распространять его на разумных условиях, по крайней мере в последнее время возникли некоторые противоречия в отношении политики Canonical в отношении ИС.
CVn

Ответы:

18

Хотя этот вопрос в некоторой степени основан на мнении:

Да, эта процедура жизнеспособна - я верю, что она выполнит то, что вы ищете, и это то, что я делал в прошлом с другими дистрибутивами Linux.

Единственный реальный недостаток - расстояние между дисками ... убедитесь, что на компьютерах ваших учеников достаточно дискового пространства для работы с размером виртуального диска. Кроме того, убедитесь, что вы храните копию в автономном режиме хотя бы на одном компьютере, чтобы вы могли использовать диск шаблона / ссылки для быстрого воссоздания диска, когда ученик убивает свой компьютер.

Недостатки динамического диска в том, что хост-операционная система должна выделять все больше и больше дискового пространства по мере роста виртуальной машины вместе с данными / обновлениями. Это приводит к снижению производительности, что иногда может быть головной болью, особенно если вы работаете на маломощной виртуальной машине (мощность хост-машины минус мощность, используемая для расширения диска, обычно приводит к некоторой задержке виртуальной машины) ... это также потенциально может привести к затем непереносимые (не все машины в вашей лаборатории могут иметь более 100 ГБ + после того, как ученик испортил свою ВМ)

Гостевые аддоны не привязаны к конкретным машинам .. они в основном набор драйверов. Когда вы импортируете виртуальную машину на новый хост, драйверы виртуальных машин обнаружат и настроят ваше оборудование для работы на новом хосте.

Создание элегантного пользователя - не уверен, может быть, скрипт, который запускается при первом запуске и просит пользователя создать новую учетную запись, прежде чем самоуничтожение скрипта? Я покопаюсь и вернусь к вам, когда у меня останется 5 минут.

Надеюсь, это хотя бы частично поможет.

Fazer87
источник
2
Спасибо, это очень помогает. Моя главная задача - не испортить основы. Не тратьте слишком много времени на создание пользователя. Это действительно не так важно. Я просто подумал, так как я все равно спрашивал, я мог бы также спросить, есть ли какой-то встроенный механизм для его решения, так как я предполагаю, что это довольно распространенная проблема.
Йонас Грайтманн
1
абсолютно - и вполне возможно, что есть встроенное решение, поэтому я хочу его найти.
Fazer87
13

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

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

  • Vagrant работает «из коробки» с VirtualBox и будет обрабатывать все сложные задачи для учащихся, такие как настройка общих папок, чтобы они могли легко копировать файлы между виртуальной машиной и хостом, настраивая сеть, чтобы предоставить им доступ в интернет к коробке. и т. д. Это также экономит ваше время на документирование / устранение проблем с настройкой VirtualBox для них.
  • Vagrantfile намного меньше, чем поставляемая VM. Если вы хотите что-то изменить / добавить в виртуальную машину в середине курса, вам не нужно перестраивать новую виртуальную машину, просто дайте им обновленный Vagrantfile.
  • Если они что-то испортят за пределами своей способности починить, они могут безболезненно уничтожить / повторно развернуть ВМ
  • Vagrantfile покажет вашим ученикам, что именно было сделано с виртуальной машиной, так что, когда они достигнут достаточного уровня понимания, они смогут увидеть, что происходит под капотом, и, возможно, извлечь из этого уроки.

Вот пример Vagrantfile, показывающий, как выполнить некоторую подготовку к образу Ubuntu 14.04.

Джоэл Б
источник
3
Vagrant и / или Packer - путь к этому.
Сэнди Чэпмен
9

Совершенно возможно. Альтернативой может быть Vagrant, Puppet, Chef или что-то подобное для создания виртуальной машины с нуля, но это очень сложная настройка.

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

Обратите внимание: Скорее всего, вам нужен доступ к сети / Интернету внутри виртуальной машины. Это может быть либо мостом или NAT на хост. Независимо от того, что вы выберете, вы должны будете проинструктировать своих студентов, как настроить сторону хоста. Просто установите сетевой адаптер внутри виртуальной машины в качестве устройства DHCP. Это безопасная отправная точка для большинства конфигураций, даже если впоследствии пользователь должен будет вручную настроить статический IP-адрес.
Размещение статического IP-адреса в виртуальной машине действительно вызывает проблемы. Он уже используется другой виртуальной машиной, подключенной к сети в той же локальной сети ...

Tonny
источник
3
Однако «много работы по настройке» зависит от того, как часто вам приходится создавать изображения. Ты снова проходишь тот же курс в следующем семестре? Может быть, вы планируете сходный курс с другим языком в следующем семестре? Хотите облегчить жизнь своим преемникам? Компиляторы C ++ имеют ошибки, которые исправляются в более поздних версиях. Новый стандарт C ++ выходит в 2017 году. Помните, что программист - это человек, который тратит 2 часа на написание программы для выполнения задачи за 2 секунды, что заняло бы 2 минуты вручную. ;-)
Jörg W Mittag
2
@ JörgWMittag Конечно, у тебя есть смысл. Но если вы не знакомы с Vagrant и т. П., Кривая обучения может быть довольно крутой / трудоемкой. Лично я бы, вероятно, выбрал бы решение VM для быстрого решения в этом семестре, а в течение семестра потратил некоторое время на разработку другого решения для долгосрочного подхода.
Тонни
2
Что касается доступа к сети, распределенные виртуальные машины, вероятно, будут иметь идентичные MAC-адреса. Это может не быть проблемой с NAT, но все равно рекомендуется сбросить MAC-адреса.
user1937198
1
@ user1937198 MAC устанавливается с помощью VirtualBox / vmdk, а не в самом VDI. Если вы укажете и щелкните новую виртуальную машину вместе в VirtualBox, а затем добавите файл VDI, вы получите новый MAC. (При импорте из OVA вас спросят, хотите ли вы сбросить MAC.) Но вы правы. Это что-то еще для рассмотрения и, конечно, проблема, если сеть работает в режиме моста.
Тонни
1
@SteveBarnes Я особенно согласен с вами в последней фразе: независимо от того, насколько хороша рабочая инструкция, люди поймут ее неправильно, когда будут следовать ей. Они пропускают шаги (или делают их в неправильном порядке), делают опечатки в командах, которые им нужно выполнить, или они думают, что знают лучше и отклоняются от сценария. Если он автоматизируемый (моя программа проверки орфографии не уверена, действительно ли это слово), лучший способ по-прежнему это автоматизировать: нет места для ошибки.
Тонни