Como faço o script da criação de Máquinas Virtuais Descartáveis ​​com a estação de trabalho vmware?

1

Estou fazendo um descartável (use para uma tarefa / site, em seguida, excluir) Máquina Virtual (VM) é um processo lento para fazê-lo na estação de trabalho VMware. Eu quero automatizá-lo assim é como o rápido ~ 5 segundo DispVM (Disposable VM = DispVM) recurso no Secure OS Qubes. Introdução ao Qubes

É apenas para um caso de uso, uma VM de navegador de site descartável quando você precisa visitar sites da Web com Java frequentemente comprometido, flash de adobe e muito mais. Portanto, se o Adobe Flash tiver outro problema de segurança, não importa, já que a VM desapareceu.

Esboço de idéia

  • Verifique se a VM principal mudou desde o último instantâneo
  • ... se o instantâneo estiver inalterado, use o instantâneo existente, caso contrário, faça um novo instantâneo
  • faça um clone ligado (usa o disco + delta do vm master, por isso não precisamos copiar todo o master vm)
  • Nomeie o clone ligado Disp # (número seqüencial gerado automaticamente)
  • quando a vm é desligada, em seguida, exclua o vm

Preciso de ajuda para completar toda a solução desejada.

  • Como faço para verificar se a VM mudou desde o último instantâneo? Os instantâneos da lista de VMs fornecem apenas os nomes que não são carimbos de data / hora.

  • Variáveis ​​ambientais de bash são limpas quando o script termina / terminal é fechado, então como eu armazeno ou detecto quantos DispVMs estão rodando então eu sei o que nomear o próximo DispVM criado? Eu vi essas variáveis ​​de loja em uma abordagem de arquivo , mas esperando por uma opção melhor:

  • Como isso pode ser generalizado para trabalhar para múltiplos protocolos de execução e nomear-se exclusivamente ao mesmo tempo?

script 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
StackAbstraction
fonte
Não está claro o que você está perguntando. Você tem algum problema em conseguir isso? Ou você está perguntando como fazer isso? O que você tentou?
Michael Frank
@MichaelFrank Sim, à procura de script (GUI é fácil, mas lento e uma dor real quando você precisa dizer 3 DispVMs) acrescentou algum código também. Está claro o que estou querendo com uma VM descartável?
StackAbstraction
1
@FranciscoTapia Estou mostrando meu trabalho e pesquisa, incluindo perguntas nos comentários do código. O comentário anterior perguntou o que eu tinha feito até agora. Eu mostro claramente a pesquisa e minhas tentativas, então por que a pergunta não é clara ou não é útil para você?
StackAbstraction
2
Eu não vejo a questão aqui. Parece que você está no caminho certo para resolver o problema sozinho, então por que não continuar fazendo o trabalho de escrever o roteiro até que ele funcione de maneira satisfatória? Você está mais do que meio caminho já, tendo descoberto a sintaxe vmrune assim por diante. Você só precisa torná-lo um pouco mais robusto. Sua única pergunta que eu poderia inferir seria: "Estou no caminho certo?" ao qual eu responderia "Definitivamente sim".
allquixotic
1
@FranciscoTapia Eu adicionei perguntas específicas onde estou tendo problemas, isso resolve sua preocupação?
StackAbstraction