Home » Artigos » Appliances na hora com BoxGrinder
formats

Appliances na hora com BoxGrinder

Published on julho 12th, 2011 by in Artigos

O post de hoje é sobre uma ferramenta muito legal chamada BoxGrinder. O BoxGrinder é um projeto membro da comunidade JBoss, produzido pelo Project Odd Team e está (finalmente) nos repositórios oficiais do Fedora 15.

O objetivo dessa ferramenta é gerar imagens (appliances) de máquinas virtuais, personalizando a instalação, determinando que pacotes serão instalados e executando tarefas pós instalação. Algo muito parecido com o que o kickstart faz, mas com o foco em virtualização. Assim, o BoxGrinder tem a capacidade de gerar o seu  appliance sem intervenção, nos formatos RAW, vmware e ec2, que podem ser usados pelo KVM, VmWare e pelo serviço de cloud da Amazon, respectivamente. Os formatos vmware e ec2 são gerados fazendo uma conversão a partir do RAW por meio de plugins.

Observe o esquema a seguir:

Após gerar a imagem no formato base(RAW), o BoxGrinder faz uso de plugins de conversão para os formatos vmware ou ec2. Depois disso, ainda é possível fazer a entrega do appliance usando os plugins de entrega disponíveis. Observe os SOs, formatos e métodos de entrega suportados:

Sistemas operacionais suportados
- CentOS (centos)
- Scientific Linux (sl)
- Red Hat Enterprise Linux (rhel)
- Fedora (fedora)

Formatos suportados
- VMware (vmware)
- Amazon Elastic Compute Cloud (ec2)
- VirtualBox (virtualbox)

Métodos de entrega
- Amazon Simple Storage Service (s3)
- Amazon Simple Storage Service (ami)
- Amazon Simple Storage Service (cloudfront)
- Elastic Block Storage (ebs)
- SSH File Transfer Protocol (sftp)
- ElasticHosts (elastichosts)
- Local file system (local)

O projeto BoxGrinder possui 3 componentes: build, rest e studio:

Nesse post, usaremos apenas o build, que é o utilitário para geração dos appliances. O rest é um servidor para processar nos nós (usando o build) as solicitações de geração de appliances, oferecendo uma API para interação. O studio é uma interface web que ainda não está pronta. Esse seria o ambiente completo para o BoxGrinder:

Vamos por a mão na massa que vai ficar mais fácil de entender…

O objetivo aqui é criar um appliance Fedora 14 com apache instalado e configurado para ser inicializado automaticamente. O formato será o VMware e a entrega será via sftp.

Usando o Fedora 15, primeiro, precisamos instalar o pacote do boxgrinder-build:

[root@localhost ~]# yum install rubygem-boxgrinder-build

Vou criar um diretório de trabalho:

[root@localhost ~]# mkdir appliances
[root@localhost ~]# cd appliances

O segundo passo é criar um arquivo de definição para o appliance. Vou criar um arquivo chamado f14-httpd.appl, com o seguinte conteúdo:

name: f14-httpd
summary: Appliance Fedora 14 com httpd.
os:
  name: fedora
  version: 14
hardware:
  cpus: 2
  memory: 256
  partitions:
    "/":
      size: 2
packages:
  - @core
  - httpd
repos:
  - name: fedora
    baseurl: http://fedora.c3sl.ufpr.br/linux/releases/14/Fedora/x86_64/os/
post:
  base:
    - "chkconfig httpd on"

Nesse arquivo definimos o OS fedora versão 14, que terá uma partição “/” de 2GB, 2 vcpus e 256MB de RAM. Serão instalados os pacotes do grupo core e o pacote httpd. Tudo isso usando o repositório especificado em repos (usar um repositório local melhora bastante o desempenho). Após a criação do formato base (RAW) será executado o comando chkconfig especificado.

(UPDATE) Os repositórios padrões de cada distro são automaticamente adicionados quando você define o “OS”. Só é necessário informar o parâmetro “repos” em caso de repositórios personalizados. Thanks Marek. 

Depois disso, é necessário criar no diretório ~/.boxgrinder/ um arquivo de configuração chamado config para os plugins:

[root@localhost ~]# mkdir ~/.boxgrinder
[root@localhost ~]# vi ~/.boxgrinder/config

E nesse arquivo colocar os seguintes parâmetros:

plugins:
  vmware:
    type: personal
    thin_disk: true
  sftp:
    path: /var
    username: root
    password: minhasenha
    host: vmserver.domain.com

Veja aqui todas as configurações de plugins.

Hora de executar o comando para gerar o appliance:

boxgrinder-build f14-httpd.appl -p vmware -d sftp

Podemos acompanhar a criação do appliance pelo arquivo log/boxgrinder.log

Acessando o diretório de entrega no servidor, temos:

[root@vmserver var]# ls -lah f14-httpd-1.0-fedora-14-x86_64-vmware.tgz
-rw-r--r--. 1 root root 173M Jul 12 15:50 f14-httpd-1.0-fedora-14-x86_64-vmware.tgz

Descompactando o arquivo:

[root@vmserver var]# tar xvfz f14-httpd-1.0-fedora-14-x86_64-vmware.tgz
f14-httpd-1.0-fedora-14-x86_64-vmware/
f14-httpd-1.0-fedora-14-x86_64-vmware/README
f14-httpd-1.0-fedora-14-x86_64-vmware/f14-httpd.vmx
f14-httpd-1.0-fedora-14-x86_64-vmware/f14-httpd.vmdk

Observe que agora temos o arquivo vmx, com as configurações da VM, e o vmdk, a própria imagem gerada.

Tudo pronto… você já pode subir seu appliance usando o VMware. Mas claro que você prefere o KVM!

Até o próximo post.


 

2 Responses

  1. This is just an awesome tutorial! Great work – thank you!

    Few minor comments:

    1. Proper command to install BoxGrinder Build is “yum install rubygem-boxgrinder-build”.
    2. Default repos for selected operating system are automatically added – you don’t need to add “repos” section in your example.

    –Marek

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© pahim.org
credit