Packer e Bento – Criando imagens customizadas para o Vagrant

Packer é uma ferramenta maravilhosa para automação, permitindo que eu consiga criar uma imagem base para posteriormente subir ela via Vagrant, além disso é uma ferramenta desenvolvida pela própria Hashicorp, responsável por criar diversas aplicações que eu não sei como vivi minha vida toda em TI sem elas (Vagrant, estou falando de você!). Só que, diferente das outras aplicações da Hashicorp, essa veio com um pequeno problema: ela não é fácil de usar.
Para ter uma noção do gral de dificuldade: com o Vagrant, basta eu alterar uma variável dentro de seu Vagrantfile e eu terei uma máquina virtual pronta, além de que algumas partes de um Vagrantfile já vieram prontas para uso, precisando só descomentar a linha para sair usando. Packer você precisa informar o movimento de suas teclas, como se estivesse instalando o sistema operacional, desde o que deve digitar até em informar que o enter deve ser pressionado.
Então como usar essa ferramenta fascinante de maneira fácil? Bom, a Chef, a empresa que lançou a ferramenta de automação Chef, criou uma série de scripts automatizados e prontos para uso do Packer, chamado de Bento. É sobre esse projeto que decidi criar esse post, explicando como utilizar e criar sua primeira imagem, além de executar o upload dela dentro do seu repositório de box local.

Preparando o Ambiente e Construindo sua Box

Bento é um projeto da Chef com o intuito de criar imagens bases para a maior parte das distribuições Linux e BSD famosas. Para utilizar esse projeto, tenha em mente que será necessário ter o VirtualBox, Packer e o Git instalados localmente. Nesse post estamos usando a versão respectiva para cada ferramenta:

  • VirtualBox: 5.2.8
  • Packer: 1.2.2
  • Git: 2.7.4

Primeiramente clone para algum diretório de sua máquina o repositório do Bento.

$ git clone https://github.com/chef/bento.git

Dentro do repositório clonado, existem vários diretórios, sendo um para cada distribuição. Os passos abaixo podem ser executados com qualquer uma das distribuições, porém iremos usar aqui o CentOS. Entre primeiramente no diretório centos dentro do repositório bento para que possamos buildar nossa imagem:

$ cd bento/centos

Dentro desse diretório, existem diversos arquivos de templates do packer prontos para build, sendo cada um deles divididos pelo nome da distro, versão, e tipo de CPU (i386 sendo 32 bits e x86_64 64 bits). Para construir a imagem, basta rodar o comando packer build informando qual arquivo json que deseja usar para a construção.

$ packer build --only=virtualbox-iso centos-7.4-x86_64.json

Pronto, após a conclusão você deverá ter uma box dentro de builds no diretório raiz desse repositório git. Simples assim…

$ cd ..
$ cd builds
$ ls
centos-7.4.virtualbox.box

E se eu quiser utilizar essa imagem com o Vagrant? Primeiro será necessário fazer upload dela dentro do repositório local de box. Para isso, ainda nessa pasta execute o comando vagrant box add, passando como parâmetro a box que deseja fazer upload e o nome que ela terá dentro do seu repositório:

$ vagrant box add centos-7.4.virtualbox.box --name centos/7

Pronto, agora quando for utilizar ela, basta informar dentro da linha config.vm.box o nome “centos/7” e ela irá utilizar a imagem que você importou. Vale ressaltar que é possível customizar esses arquivos do packer para deixar da maneira que quiser, bastando seguir a documentação oficial da ferramenta.

  • https://github.com/chef/bento
  • https://www.packer.io/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *