Я делаю одноразовую (использую для одной задачи / веб-сайта, затем удаляю) виртуальную машину (ВМ), это медленный процесс на рабочей станции VMware. Я хочу автоматизировать его, чтобы он напоминал быструю функцию DispVM (Disposable VM = DispVM) ~ 5 секунд в защищенных кубах ОС. Введение в Qubes
Это только для одного случая использования - одноразовой виртуальной машины с веб-браузером, когда вам приходится посещать веб-сайты с часто скомпрометированной Java, Adobe Flash и многим другим. Так что, если у Adobe Flash есть еще одна проблема безопасности, это не имеет значения, так как эта виртуальная машина исчезла.
Набросок идеи
- Проверьте, изменилась ли главная виртуальная машина с момента последнего снимка
- ... если снимок неизменен, используйте существующий снимок, в противном случае создайте новый снимок
- сделать связанный клон (использует диск главного диска vm + дельта-файл, поэтому нам не нужно копировать весь главный виртуальный диск)
- Назовите связанный клон Disp # (автоматически сгенерированный порядковый номер)
- когда виртуальная машина выключена, то удалите виртуальную машину
Мне нужна помощь в завершении всего желаемого решения.
Как проверить, изменилась ли виртуальная машина с момента последнего снимка? Снимки списка ВМ дают только имена, а не метки времени / даты.
Переменные окружения Bash очищаются, когда скрипт завершается / терминал закрывается, так как я могу сохранить или определить, сколько запущенных DispVM, чтобы я знал, как назвать следующий созданный DispVM? Я видел это хранилище переменных в файловом подходе, но надеялся на лучший вариант:
Как это можно обобщить для работы нескольких DispVM и одновременного присвоения им уникальных имен?
скрипт bash:
# assume snapshot current, | tail -1 (gives last snapshot name)
$strCurrentSnapshotName = vmrun -T ws listShapshots VMs/Master-Fedora-DVM.vmx | tail -1
# make linked clone
vmrun -T ws clone VMs/Master-Fedora/Master-Fedora-DVM.vmx VMs/DVM1/DVM1.vmx linked strCurrentSnapshotName
vmrun start VMs/DVM1/DVM1.vmx
vmrun -gu <user> -gp <pass> runProgramInGuest VMs/DVM1/DVM1.vmx /usr/bin/firefox --display=:0
# How to check if VM is powered off
# when list of running VMs does not contain DVM then we are ok to break and delete
while [ !(vmrun -T ws list | grep DVM) ]
do
sleep 5
done
# now dispose of and delete vm
vmrun -T ws unregister VMs/DVM1.vmx
# shred directory and delete
find VMs/DVM1/ -type f -exec shred {} \;
vmrun -T ws deleteVM VMs/DVM1/DVM1.vmx