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.


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 .


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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.