Назад | Перейти на главную страницу

Управление обновлением и распространением виртуальных машин - что-то не так?

Я работаю в софтверной компании. Мой отдел отвечает (помимо прочего) за создание и распространение виртуальных машин VMWare среди членов нашей группы продаж, которые затем запускают их с помощью VMWare Player для демонстрации своих продуктов для клиентов.

В последнее время мне пришло в голову, что то, как мы обновляем и распространяем эти виртуальные машины, является неправильным. Вот наш процесс обновления "Демо ВМ:"

  1. Загрузите новую копию ВМ (~ 35 ГБ) с центрального сервера
  2. Установите его в постоянный режим, затем запустите и внесите изменения, такие как обновление продуктов до последних версий и обновление лицензий.
  3. После внесения изменений выключите его и верните в непостоянный режим, затем загрузите все это (~ 35 ГБ) обратно на центральный сервер с новым именем папки с увеличенным номером версии.
  4. Тот, кому нужна последняя версия, загружает ее с файлового сервера (35 ГБ * X)

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

Мой вопрос: есть ли лучший способ управления обновлением и распространением виртуальных машин, которые необходимо запускать локально на машинах пользователей?

Причина, по которой я начал сомневаться в нашем текущем методе, заключается в том, что при обновлении виртуальной машины изменяется только небольшая часть файлов (VMEM и образы виртуальных дисков), верно? Поэтому вместо копирования всей папки виртуальной машины должен быть способ, так сказать, выгружать / скачивать только дельты. Подобно тому, как работают системы контроля версий, такие как Git. Я действительно пытался использовать для этого Git, но оказывается, что Git ужасен, когда дело доходит до управления огромными файлами. Я решил, что спрошу здесь.

Для этого хорошо подойдет Rsync. Если вы хотите распространять различия на машины, у которых нет прямого доступа к серверу, вы также можете попробовать xdelta.

Запуск обновлений для запуска внутри виртуальных машин также может быть вариантом, но вы должны быть осторожны, чтобы нетерпеливый пользователь не повредил виртуальную машину, если он прервал ее во время обновления. Я бы лично пошел по пути исправления файлов виртуальных дисков.

На мой взгляд, правильный ответ зависит от целевой операционной системы, так как доступные инструменты сильно различаются.

В этом рабочем процессе может быть интересный поворот, который может улучшить процесс, сделав его воспроизводимый, но также гибкий. Позвольте мне объяснить, как это сделать. Эта задача, как вы ее описали (и если я правильно ее понял), основана на создании золотой образ офлайн, и позволить сотрудникам отдела продаж клонировать его.

(Из предоставленной вами информации неясно, должны ли эти сотрудники иметь возможность изменять золотой образ или просто использовать его в демонстрационных целях при его распространении, что может вызвать разветвление, которое я не рассматриваю ниже).

Итак, чтобы дать хотя бы частичный ответ, это мои

предположения:

  • целевая платформа (демонстрационная виртуальная машина) является машиной GNU / Linux
  • все распространяемое программное обеспечение и его лицензии упакованы (или могут быть упакованы) с использованием формата целевой ОС (RPM, deb, ...). С этим можно справиться разными способами:
    • стандарт debian-rules или spec файлы в паре с autotools течь
    • более гибкие процессы с использованием таких инструментов, как fpm

  • доступна точка распространения, которая может обрабатывать как пакет, так и управление конфигурацией / распространение (не обязательно должна быть одна служба / машина, это просто пытается отразить необходимость того, чтобы эти службы были централизованный и доступный). Опять же, есть много разных способов справиться с этим:
    • а cobbler сервер. Может управлять разными сервисами, но наиболее интересными из них будут TFTP, PXE, кикстартинг, предварительное заполнение, то есть этап инициализации. В качестве альтернативы, pulp также может распространять репозитории (не только по запросу клиента, но и активно с сервера).
    • а система управления конфигурацией, Такие как puppet, ansible, salt, ..., т.е. шаг настройки.
    • вся конкретная конфигурация, которая не может быть объединена в пакет как есть, управляется системой управления конфигурацией и хранится в система контроля версий.

  • программное обеспечение, отличное от VMPlayer от VMWare, может использоваться для управления виртуализированной системой.

и некоторые варианты использования:

- полноценные виртуальные машины GNU / Linux

Если вы можете пожаловаться на приведенные выше предположения, есть несколько способов гарантировать, что конечный пользователь может иметь виртуальную машину с точной конфигурацией и установленным программным обеспечением, которое вы выбрали ранее. Один из них предполагает использование vagrant. Используя это программное обеспечение, вам нужно изменить только один файл ( vagrantfile чтобы описать тип машины, которую вы хотите построить. Более того, vagrant может также управлять подготовленной машиной в соответствии с выбранной вами системой управления конфигурацией. Онлайн-документация довольно хороша, и есть много примеры онлайн.

Машины торгового персонала могут иметь любую ОС, единственное требование - они установить vagrant на хост-машине. Для создания демонстрационной виртуальной машины потребуется всего лишь простое vagrant up.

Есть интересные альтернативы vagrant, также. Проверьте, например, packer.

- предложение на основе контейнеры, а не полноценные виртуальные машины

Если машины торгового персонала могут использовать любую операционную систему GNU / Linux, вы также можете воспользоваться контейнеры, способ запуска виртуализированных операционных систем с небольшими накладными расходами. Более интересные способы (на мой взгляд) использования этой технологии включают, но не ограничиваются: libvirt, docker и LXC. В Docker есть концепция dockerfile, по функциональности схожий с vagrantfile, и что еще интереснее, есть реестр который может разместить ваш распространяемые изображения.

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

- обойтись без операционной системы

Чтобы улучшить процесс распространения, конечно, следует убедиться, что установлено только минимально необходимое программное обеспечение. Но есть способы вообще обойтись без операционной системы. Если ваш вариант использования может выиграть от использования такого программного обеспечения, как supermin, размер устройства может составлять от нескольких мегабайт до гигабайта.

Другие предложили другой подход, без хостинговой операционной системы, но эта модель, похоже, не соответствует тому, что вы описали.