Existe um equivalente moderno do python-vm-builder?

11

Estou tentando encontrar a melhor maneira moderna de fazer o que costumava fazer com o python-vm-builder (também conhecido como ubuntu-vm-builder).

Eu quero uma maneira com script e repetível para começar a partir de algo como o ubuntu-core (também conhecido como JeOS ), adicionar alguns pacotes, definir scripts de primeira execução etc.

O que estou procurando é algo parecido com a rotação de um ISO personalizado (embora não seja um ISO, será um sistema "instalado"). O resultado precisa ser um kernel, imagem initrd e rootfs adequados para uma inicialização PXE sem disco com NFS.

Quais ferramentas são usadas para criar, por exemplo, a imagem do Ubuntu netboot (ou qualquer imagem do Ubuntu)? Eles são flexíveis o suficiente para minhas necessidades?

E as ferramentas usadas para criar os ambientes de instalação nova usados ​​para o teste de integração do Ubuntu? Eles seriam apropriados?

Observe que, em tempo de execução, o rootfs será montado como somente leitura, portanto, não pretendo gerenciar uma instância ao longo do tempo. Eu estou olhando para girar novamente uma instalação automatizada a cada nova versão do Ubuntu e periodicamente nos 6 meses seguintes.

jderose
fonte
2
Eu não tenho uma resposta, pois não tenho certeza da maneira atual de melhores práticas, mas isso parece suspeito como uma tarefa para Chef ou Puppet, possivelmente até para Vagrant.
Marco Ceppi
1
Por que o vmbuilder não atende mais às suas necessidades? Ele é usado debootstrappara criar o sistema base (um "chroot" que pode ser copiado para uma imagem de disco). Dê uma olhada e veja se isso ajuda.
Salem
Acho que o vmbuilder funcionaria, mas isso é para um sistema de longo prazo, então não quero construir em bits que já estão mortos na água.
jderose

Respostas:

7

Você pode usar uma imagem oficial da nuvem diretamente e, em seguida, criar uma pequena imagem ISO usando cloud-localds(do cloud-utilspacote) para usar como fonte de dados "nocloud" no cloud-init.

Em seguida, você pode usar cloud-init userdata (exemplo) como um único mecanismo para adicionar pacotes e executar seus próprios scripts de primeira execução em provedores de nuvem que fornecem imagens oficiais da nuvem Ubuntu, bem como em suas VMs locais.

Se você executar cloud-localdssem parâmetros, ele exibirá um exemplo de uso para configurar e executar uma VM usando o kvm diretamente.

Para executar a VM de outra maneira, basta fornecer uma imagem da nuvem (por exemplo, baixada de https://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img para 12.04) como primeiro disco e apresente a saída da imagem ISO cloud-localdscomo um CD-ROM.

Mais informações estão no post de Scott Moser .

Robie Basak
fonte
1
Não tenho certeza de quão aplicável isso seria se você quiser acabar com um sistema de desktop.
precisa
Obrigado! Parece o tipo de coisa que estou procurando. E esse ambiente não é para um sistema de desktop, BTW. Estou construindo algo parecido com o ambiente efêmero do MAAS. Ele precisa ser mais abrangente do que dizer o núcleo do Ubuntu sozinho, mas eu gostaria que fosse um pouco menor do que uma instalação mínima do servidor Ubuntu.
jderose
2

Como eu nunca empacotei uma ISO, não posso comentar com minha própria experiência, mas parece que a resposta para sua pergunta é Cobbler ( http://cobbler.github.com ).

Da documentação da comunidade Ubuntu:
"O Ubuntu usa o sapateiro como o servidor de provisionamento preferido para máquinas Ubuntu". -  https://help.ubuntu.com/community/Cobbler

Buddy Gorven
fonte
1
help.ubuntu.com/community/Cobbler está desatualizado. Eu apenas pedi que fosse atualizado. Desculpe, isso foi esquecido antes.
Robie Basak
1
Obrigado! Embora eu provavelmente possa fazer o que quero com o Sapateiro, parece um exagero para o que estou buscando. Não quero um serviço de provisionamento (e as complexidades que isso traz), apenas uma ferramenta de provisionamento muito simples. Estou procurando algo mais alto que o debootstrap, mas ainda assim uma linha de comando ou ferramenta de API de uso único.
jderose