Criando uma VM do Ubuntu para distribuir

19

Sou um TA para um curso de programação e tenho a tarefa de criar uma imagem de máquina virtual baseada no Ubuntu 14.04 LTS com todos os softwares necessários (para desenvolvimento em C ++ e Python) pré-instalados, para que todos tenham o mesmo sistema virtual em execução evite as dificuldades de fazer tudo funcionar em uma variedade de máquinas e sistemas operacionais diferentes. Pretendemos usar o Virtual Box como o software da VM host, pois ele é gratuito e está disponível em várias plataformas.

Naïvely, gostaria apenas de usar a imagem de disco Ubuntu 14.04 LTS, executá-la na minha Virtual Box, instalá-la no disco rígido virtual (VDI), configurar uma conta "student" com uma senha predefinida, instalar todas as informações necessárias software, encerre a máquina virtual e distribua o arquivo VDI. Pedimos a cada aluno que importe o VDI para o Virtual Box, execute-o e configure sua conta pessoal (ou apenas use a conta padrão do aluno).

  • O procedimento acima é viável?
  • Qual é a armadilha de se procurar? Precisamos que isso seja praticamente à prova de idiotas. Esperamos mais de 80 alunos e são apenas quatro TAs, por isso não podemos oferecer suporte individual.
  • Existem desvantagens em usar um HDD virtual do tipo VDI alocado dinamicamente?
  • Posso instalar o Guest Additions do Virtual Box logo de cara ou ele faz alguma coisa específica do host?
  • Existe uma maneira mais elegante de lidar com a criação da conta de usuário? Idealmente, o Ubuntu os colocaria por meio de um assistente de criação de contas e faria com que eles definissem suas senhas (bem como as adicionassem ao arquivo sudoers) na primeira vez que inicializassem a imagem. Esta não é uma prioridade, no entanto. Eu acho que ter uma conta padrão está bem.
por Jonas 23.03.2016 / 11:00

3 respostas

18

Embora essa questão seja de certa forma baseada em opiniões:

Sim, este procedimento é viável - acredito que ele realizaria o que você está procurando e é algo que fiz no passado com outras distribuições de linux.

A única armadilha real está em torno do espaçamento de disco ... certifique-se de que as máquinas dos seus alunos tenham espaço em disco suficiente para lidar com o tamanho do Disco Virtual. Além disso, certifique-se de manter uma cópia off-line em pelo menos uma máquina para poder usar o disco de modelo / referência para recriar rapidamente um disco quando um aluno mata a máquina.

As desvantagens de um disco dinâmico é que o sistema operacional host precisa continuar alocando mais e mais espaço em disco à medida que a VM cresce com dados / atualizações. Isso tem uma sobrecarga de desempenho que pode ser uma dor de cabeça às vezes - especialmente se você estiver executando em uma VM de baixa potência (a potência da máquina host menos a potência sendo usada para expandir um disco tende a tornar as VMs um pouco atrasadas). então não suportável (nem todas as máquinas do seu laboratório podem ter 100 GB ou mais, uma vez que o aluno tenha mexido com a VM)

Os complementos de convidado não são específicos da máquina. Eles são praticamente um conjunto de drivers. Quando você importa a VM para um novo host, os drivers da VM detectam e ajustam seu hardware para trabalhar no novo host.

Criação de usuário elegante - não tenho certeza, talvez um script que seja executado no primeiro lançamento e peça ao usuário para criar uma nova conta antes que o script seja destruído? Eu vou fazer algumas escavações e voltar para você quando eu tiver 5 minutos de sobra.

Espero que isso ajude pelo menos parcialmente.

    
por 23.03.2016 / 11:15
13

Respondendo exatamente à sua pergunta, se você precisar personalizar a VM e distribuir uma VM VirtualBox entregue, recomendo usar o Packer como pré-pacote a VM com todas as dependências necessárias. Ele é criado apenas para esse propósito e permite que você crie uma imagem de um ISO , execute qualquer provisão desejada contra essa imagem e, em seguida, cria uma imagem de VM do VirtualBox que pode ser entregue. Isso é bom para você também porque documenta exatamente o que foi feito para a entrega, caso você queira reproduzi-la / adicionar algo a ela. Além disso, você pode verificar o projeto em um sistema de controle de origem e fazer alterações. Veja um exemplo disso para você começar.

No entanto, se você quiser que eles corram rapidamente, eu recomendo usar o Vagrant e distribuir para seus alunos um Vagrantfile que realize o desejado provisionamento que você precisa em uma imagem padrão do Ubuntu . Isso tem várias vantagens:

  • O Vagrant funciona com o VirtualBox e vai lidar com todas as partes difíceis para os alunos, como configurar pastas compartilhadas para que possam copiar arquivos facilmente entre a VM e a máquina host, configurando a rede para permitir o acesso à Internet. caixa para eles, etc Isso também poupa o tempo de ter que documentar / debugar problemas de configuração do VirtualBox para eles.
  • Um Vagrantfile é muito menor que uma VM de entrega. Se você quiser alterar / adicionar algo à VM no meio do curso, não precisará reconstruir uma nova VM, apenas forneça um Vagrantfile atualizado.
  • Se eles interferirem em algo além de sua capacidade de repará-lo, eles poderão destruir / reimplementar a VM novamente
  • Um Vagrantfile mostrará a seus alunos exatamente o que foi feito para a VM, de modo que quando chegarem ao ponto em que eles entendam o suficiente, eles poderão ver o que está acontecendo e possivelmente aprender com isso também.

Aqui está um exemplo de Vagrantfile mostrando como fazer um provisionamento em uma imagem do Ubuntu 14.04.

    
por 23.03.2016 / 21:04
9

Perfeitamente viável. A alternativa seria Vagrant, Puppet, Chef ou algo semelhante para construir a VM a partir do zero, mas isso é muito trabalho para configurar.

A equipe de desenvolvimento de um dos meus sites faz o mesmo para que novos desenvolvedores entrem rapidamente em funcionamento.
1 conta pré-definida (com sudo-rights) na imagem e um pequeno documento de instrução com as etapas que devem ser tomadas para criar sua conta pessoal.

Atenção: você provavelmente precisa de acesso à rede / internet dentro da VM. Isso pode ser em ponte ou NATted no host. Independentemente de qual você escolher, você terá que instruir seus alunos como configurar o lado do host disto. Basta configurar o NIC dentro da VM como dispositivo DHCP. Esse é um ponto de partida seguro para a maioria das configurações, mesmo que o usuário precise configurar manualmente um endereço IP estático posteriormente.
Colocar um endereço IP estático na VM está realmente causando problemas. Está vinculado a estar em uso já por outra VM ficando on-line na mesma LAN ...

    
por 23.03.2016 / 14:32