Я работаю в софтверной компании. Мой отдел отвечает (помимо прочего) за создание и распространение виртуальных машин VMWare среди членов нашей группы продаж, которые затем запускают их с помощью VMWare Player для демонстрации своих продуктов для клиентов.
В последнее время мне пришло в голову, что то, как мы обновляем и распространяем эти виртуальные машины, является неправильным. Вот наш процесс обновления "Демо ВМ:"
Это не только требует большой пропускной способности сети, но и загрузка 35 ГБ данных из сети может занять много времени, особенно для людей в наших удаленных офисах, которые не могут позволить себе роскошь скорости интрасети.
Мой вопрос: есть ли лучший способ управления обновлением и распространением виртуальных машин, которые необходимо запускать локально на машинах пользователей?
Причина, по которой я начал сомневаться в нашем текущем методе, заключается в том, что при обновлении виртуальной машины изменяется только небольшая часть файлов (VMEM и образы виртуальных дисков), верно? Поэтому вместо копирования всей папки виртуальной машины должен быть способ, так сказать, выгружать / скачивать только дельты. Подобно тому, как работают системы контроля версий, такие как Git. Я действительно пытался использовать для этого Git, но оказывается, что Git ужасен, когда дело доходит до управления огромными файлами. Я решил, что спрошу здесь.
Для этого хорошо подойдет Rsync. Если вы хотите распространять различия на машины, у которых нет прямого доступа к серверу, вы также можете попробовать xdelta.
Запуск обновлений для запуска внутри виртуальных машин также может быть вариантом, но вы должны быть осторожны, чтобы нетерпеливый пользователь не повредил виртуальную машину, если он прервал ее во время обновления. Я бы лично пошел по пути исправления файлов виртуальных дисков.
На мой взгляд, правильный ответ зависит от целевой операционной системы, так как доступные инструменты сильно различаются.
В этом рабочем процессе может быть интересный поворот, который может улучшить процесс, сделав его воспроизводимый, но также гибкий. Позвольте мне объяснить, как это сделать. Эта задача, как вы ее описали (и если я правильно ее понял), основана на создании золотой образ офлайн, и позволить сотрудникам отдела продаж клонировать его.
(Из предоставленной вами информации неясно, должны ли эти сотрудники иметь возможность изменять золотой образ или просто использовать его в демонстрационных целях при его распространении, что может вызвать разветвление, которое я не рассматриваю ниже).
Итак, чтобы дать хотя бы частичный ответ, это мои
debian-rules
или spec
файлы в паре с autotools
течьfpm
cobbler
сервер. Может управлять разными сервисами, но наиболее интересными из них будут TFTP, PXE, кикстартинг, предварительное заполнение, то есть этап инициализации. В качестве альтернативы, pulp
также может распространять репозитории (не только по запросу клиента, но и активно с сервера).puppet
, ansible
, salt
, ..., т.е. шаг настройки.Если вы можете пожаловаться на приведенные выше предположения, есть несколько способов гарантировать, что конечный пользователь может иметь виртуальную машину с точной конфигурацией и установленным программным обеспечением, которое вы выбрали ранее. Один из них предполагает использование vagrant
. Используя это программное обеспечение, вам нужно изменить только один файл ( vagrantfile
чтобы описать тип машины, которую вы хотите построить. Более того, vagrant
может также управлять подготовленной машиной в соответствии с выбранной вами системой управления конфигурацией. Онлайн-документация довольно хороша, и есть много примеры онлайн.
Машины торгового персонала могут иметь любую ОС, единственное требование - они установить vagrant
на хост-машине. Для создания демонстрационной виртуальной машины потребуется всего лишь простое vagrant up
.
Есть интересные альтернативы vagrant
, также. Проверьте, например, packer
.
Если машины торгового персонала могут использовать любую операционную систему GNU / Linux, вы также можете воспользоваться контейнеры, способ запуска виртуализированных операционных систем с небольшими накладными расходами. Более интересные способы (на мой взгляд) использования этой технологии включают, но не ограничиваются: libvirt
, docker
и LXC
. В Docker есть концепция dockerfile
, по функциональности схожий с vagrantfile
, и что еще интереснее, есть реестр который может разместить ваш распространяемые изображения.
Контейнеры могут работать как простые службы в операционной системе хостинга, поэтому пользоваться ими довольно просто.
Чтобы улучшить процесс распространения, конечно, следует убедиться, что установлено только минимально необходимое программное обеспечение. Но есть способы вообще обойтись без операционной системы. Если ваш вариант использования может выиграть от использования такого программного обеспечения, как supermin
, размер устройства может составлять от нескольких мегабайт до гигабайта.
Другие предложили другой подход, без хостинговой операционной системы, но эта модель, похоже, не соответствует тому, что вы описали.