Como criar um box para o Vagrant

O Vagrant é um projeto que permite gerenciar ambientes virtuais de forma simples e eficiente. Ele possui suporte às principais soluções de virtualização e também para várias ferramentas de provisionamento, como Puppet e Chef.

[ Hits: 8.528 ]

Por: Paulo Dias em 18/01/2017 | Blog: http://naotenhosite.eu.nao.tenho


Introdução



O Vagrant é um projeto que permite gerenciar ambientes virtuais de forma simples e eficiente. Ele possui suporte às principais soluções de virtualização e também para várias ferramentas de provisionamento, como Puppet e Chef.

Para saber mais acesse o site do projeto:
O Vagrant empacota as máquinas virtuais em boxes que podem ser criados e depois disponibilizados no site oficial do projeto. Nesse artigo, quero mostrar como criar e disponibilizar uma box para o Vagrant. A maneira mais simples de criar um box é a partir de um box já existente, mas vou optar por criar um box do zero.

O site do Vagrant já possui boxes para as distribuições GNU/Linux mais conhecidas, então, para criar algo diferente, vou utilizar uma distribuição menos conhecida, o Slitaz. Trata-se de uma distribuição independente (não é baseada em outra distribuição) que na versão mais completa, com ambiente gráfico e outros programas de uso geral, cabe em uma imagem ISO com menos de 50MB.

O trabalho realizado pelos desenvolvedores do Slitaz é excelente e pode ser conferido em detalhes no site:
Como a ideia é criar um box para o Vagrant, vou utilizar o sabor base do Slitaz que possui apenas o ambiente em modo texto e, consequentemente, uma imagem ISO ainda menor. O download pode ser feito nesse endereço:
Para configurar o Slitaz como um box, é necessário instalá-lo em uma máquina virtual, instalar um conjunto de pacotes e configurar alguns arquivos. Para iniciar, é necessário ter o Vagrant e o VirtualBox instalados na máquina física. No Debian Jessie e em distribuições Debian-like, a instalação pode ser feita com o seguinte comando:

sudo apt-get install vagrant virtualbox

Feito isso, basta criar um máquina no VirtualBox e iniciar a imagem do Slitaz. O processo de boot é extremamente rápido, serão feitas algumas perguntas para localização do ambiente e o sistema já está pronto para ser utilizado. O usuário 'root', por padrão, usa a senha 'root'.

Instalação do S.O

Por enquanto, o Slitaz está rodando no modo live a partir da imagem de CD, para realizar a instalação, o primeiro passo é particionar o HD. Isso pode ser feito com o comando fdisk, assim:

Obs.: os próximos comandos devem ser executados na máquina virtual do Slitaz.

# fdisk /dev/sda
No fdisk, a opção 'm' lista todas as opções disponíveis. Para criar um partição primaria, use 'n', depois 'p', escolha o número para partição (1), escolha o inicio da partição (1) e o tamanho da partição (+8000M). Para sair do fdsik, use 'w'.

Depois de criar a partição, adicione um sistema de arquivo com o comando:

# mkfs.ext4 /dev/sda1

O próximo passo é copiar os arquivos do Slitaz para a partição do HD. A partição e o CD do Slitaz (a imagem ISO que está no VirtualBox) devem ser montadas com os comandos:

# mount /dev/sda1 /mnt
# mount /dev/cdrom /media/cdrom

Então, para copiar o kernel, faça:

# mkdir /mnt/boot/
# cp -a /dev/cdrom/boot/vmlinuz* /mnt/boot/

Depois, copie e descompacte o filesystem:

# cp /media/cdrom/boot/rootfs.gz /mnt/
# cd /mnt/
# unlzma < rootfs.gz | cpio -id
# rm rootfs.gz init

Feito isso, o Slitaz já está instalado, mas antes de continuar, ainda é necessário instalar o GRUB (a primeira versão, também chamado de GRUB legacy). Execute o comando:

# grub-install --root-directory=/mnt/ /dev/sda

E crie o arquivo de configuração /mnt/boot/grub/menu.lst com o seguinte conteúdo:

timeout 5

default 0

title Slitaz
   root( hd0, 0 )
   kernel /boot/vmlinuz-2.6.37-slitaz root=/dev/sda1 vga=normal

Obs.: o "root (hd0, 0 )" é referente ao primeiro HD e a primeira partição, ou seja, /dev/sda e /dev/sda1. Se fosse a primeira partição do segundo HD, seria root( hd1, 0 ).

O Slitaz e o GRUB estão instalados, retire a imagem do Slitaz do VirtualBox e reinicie o sistema com o comando:

# reboot
Boot em 4 segundos. :O

Configuração e empacotamento do S.O

Com o sistema instalado, é possível adicionar os pacotes necessários para o Slitaz ser um box do Vagrant:

# tazpkg recharge

# tazpkg get-install sudo
# tazpkg get-install openssh
# tazpkg get-install linux-api-headers
# tazpkg get-install linux-module-headers
# tazpkg get-install dkms
# tazpkg get-install bzip2
# tazpkg get-install wget
# tazpkg get-install bash

Durante a instalação do bash, o sistema vai perguntar se o sh deve ser um link para o bash, certifique-se de responder yes.

Depois, para seguir o padrão dos boxes do Vagrant, é necessário ter um usuário 'vagrant' com senha 'vagrant' e também alterar a senha do usuário 'root' para 'vagrant':

# adduser vagrant
# passwd

O Vagrant conecta no sistema usando SSH sem senha através do sistema de chaves, para que isso funcione, é preciso baixar a chave publica para o usuário 'vagrant'.

mkdir /home/vagrant/.ssh/
wget --no-check-certificate https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys

chown vagrant:vagrant /home/vagrant/.ssh/ -R
chmod 0700 /home/vagrant/.ssh/
chmod 0600 /home/vagrant/.ssh/authorized_keys

O usuário 'vagrant' também precisa poder usar o sudo sem senha, isso pode ser configurado com o comando visudo, adicionando à linha:

vagrant ALL=(ALL) NOPASSWD: ALL

O próximo passo é instalar os adicionais de convidado do VirtualBox, adicione a imagem de CD na máquina virtual e execute esses comandos para realizar a instalação:

# mount /dev/cdrom /media/cdrom
# sh /media/cdrom/VBoxLinuxAddtions.run

Feito isso, o sistema já está quase pronto para ser um box. Mas antes de terminar, é importante adicionar a seguinte linha, sugerida pela equipe do Vagrant, no arquivo /etc/ssh/sshd_config:

UseDNS no

E por último, como o Vagrant utiliza apenas o comando "shutdown -h now" para desligar o sistema, e esse comando não está presente, de forma nativa no Slitaz (ele usa o "poweroff", "halt" e "reboot"), é necessário criar uma alternativa. Um jeito simples, é criar um shell script /sbin/shutdown com o seguinte conteúdo:

#!/bin/bash

if [ $1 = '-h' -a $2 = 'now'] ; then

     poweroff;
     exit 0;

fi

echo 'Only shutdown -h now is implemented';
exit 1;

Obs.: use o comando chmod para dar permissão de execução para o script.

Pronto. Com isso, o sistema já está configurado para ser um box do Vagrant. Para terminar, desligue a máquina virtual e na máquina física execute o seguinte comando:

# vagrant package --base nome_vm_slitaz

Obs.: substitua nome_vm_slitaz pelo nome da máquina do Slitaz que você criou no VirtualBox.

Com isso, foi criado o box do Slitaz com o nome "package.box". Para testar, utilize os seguintes comandos:

# vagrant box add slitaz package.box
# vagrant init slitaz
# vagrant up

Depois de testar o seu box, se quiser compartilhar, basta criar uma conta nesse link:
Então é isso, qualquer dúvida, deixe um comentário e se quiser baixar o meu box do Slitaz, acesse:
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

AWK - Manipulação de arquivos de texto

Bitwise - Escovando os bits

JavaScript - Programação orientada a objetos

MathML - Mathematical Markup Language

Programação com Shell Script

Leitura recomendada

OpenNebula Sunstone

Nuxeo EP com MySQL no Ubuntu LTS Server Hardy 8.04

Compilando facilmente com o apt-build

Nota Fiscal Eletrônica 2.0 em linha de comando (parte 1)

Instalando o Gnome 2.8 no SuSE 9.1

  
Comentários
[1] Comentário enviado por M1n4t0 em 24/01/2017 - 16:48h

Me ajudou mt obg. ;)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts