1

Я делаю одноразовую (использую для одной задачи / веб-сайта, затем удаляю) виртуальную машину (ВМ), это медленный процесс на рабочей станции 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

0