Criando imagens com Packer

Captura de tela de 2020-05-06 10-18-31

    O Packer é uma ferramenta Open Source para criação de imagens através de código fonte. É importante alertar que o Packer não é uma ferramenta para gerenciamento de configuração e sim para criação de imagens estáticas pré-configuradas. Com o Packer é possível criar imagens para diversos ambientes como por exemplo, imagens para Docker, vmware entre outros.

    Para quem ainda não tem seu processo automatizado, o processo de criação de uma imagem nos dias de hoje pode passar por um processo massante e com grande perda de tempo, a ideia do Packer é justamente facilitar a criação destas imagens e com isso termos a mesma imagem em todos os ambientes, reduzindo o risco de erros manuais durante a criação.

    Irei Realizar uma sequencia de postagens com a criação de algumas imagens Docker e VMware:
– Instalando e Criando uma Imagem Docker.
– Criando uma Imagem VMware Centos Nginx.
– Criando uma Imagem VMware Centos PostqgreSQL.
– Criando uma Imagem VMware Centos Tomcat.

Instalando o Packer

    A instalação é bastante Simples. Basta acessar o endereço https://www.packer.io/downloads/ ele irá sugerir uma pacote para download, como mostra imagem abaixo.

Após baixar o .zip descompactar o arquivo no diretório /usr/sbin da sua maquina.

    Outra alternativa pra quem ta usando o Ubuntu é simplesmente executar o comando abaixo:

sudo apt-get install packer -y

Após instalado verificamos ser a instalação ocorreu com sucesso:

   Com tudo instalado e considerando que já possuímos o docker também em nosso computador, vamos iniciar a criação do nosso primeiro Builder.
O Builders são responsáveis pela criação das maquinas e geração das imagens.

    Como o post é Baseado na documentação oficial irei usar o mesmo exemplo do Builder, então vamos lá.

Criando o Builder

    O Packer utiliza arquivos em JSON, assim, vamos criar o arquivo packer.json com o seguinte conteúdo:

Captura de tela de 2020-05-06 10-22-02

    Se você prestar atenção, o arquivo reproduz algo parecido com um arquivo Dockerfile. Isso porque o Packer permite a criação de imagens sem o uso de um Dockerfile.

Agora detalhando o arquivo, temos :

type: Este é o campo onde dizemos se o Build será Docker, VMware, AWS.

image: Aqui iremos especificar qual imagem base será utilizada para criação da nossa imagem.

commit: Para quem já cria imagens docker, sabe que para criação da imagem é necessário o commit, assim o packer já automatiza esse processo.

changes : O changes é o campo onde iremos reproduzir todas as alterações que seria realizadas dentro do Dockerfile.

Podemos realizar a validação do nosso arquivo com o seguinte comando:

$ packer validate packer.json
Template validated successfully.

Veja que tivemos como retorno “Template validated successfully.”.

Iniciando o Build

Para realizar o build iremos usar o comando “packer build” no arquivo .json criado por nós.

$ packer build packer.json

docker output will be in this color.

==> docker: Creating a temporary directory for sharing data…
==> docker: Pulling Docker image: ubuntu
docker: Using default tag: latest
docker: latest: Pulling from library/ubuntu
docker: d51af753c3d3: Pulling fs layer
docker: fc878cd0a91c: Pulling fs layer
docker: 6154df8ff988: Pulling fs layer
docker: fee5db0ff82f: Pulling fs layer
docker: fee5db0ff82f: Waiting
docker: fc878cd0a91c: Download complete
docker: 6154df8ff988: Verifying Checksum
docker: 6154df8ff988: Download complete
docker: fee5db0ff82f: Verifying Checksum
docker: d51af753c3d3: Verifying Checksum
docker: d51af753c3d3: Download complete
docker: d51af753c3d3: Pull complete
docker: fc878cd0a91c: Pull complete
docker: 6154df8ff988: Pull complete
docker: fee5db0ff82f: Pull complete
docker: Digest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7
docker: Status: Downloaded newer image for ubuntu:latest
docker: docker.io/library/ubuntu:latest
==> docker: Starting docker container…
docker: Run command: docker run -v /home/belyjr/.packer.d/tmp/packer-docker515954196:/packer-files -d -i -t ubuntu /bin/bash
docker: Container ID: 50fdf233946c2a2b2e62c68cef3331e33ce7de9d0f24d50ade44b9ea78a8d214
==> docker: Committing the container
docker: Image ID: sha256:f33c4882dd5a811cbda2bc5e2a9422915e840415e95551f41ed7d39ad52f0602
==> docker: Killing the container: 50fdf233946c2a2b2e62c68cef3331e33ce7de9d0f24d50ade44b9ea78a8d214
==> docker: Running post-processor: docker-tag
docker (docker-tag): Tagging image: sha256:f33c4882dd5a811cbda2bc5e2a9422915e840415e95551f41ed7d39ad52f0602
docker (docker-tag): Repository: bjuniow/ubuntu:0.1
Build ‘docker’ finished.

==> Builds finished. The artifacts of successful builds are:
–> docker: Imported Docker image: sha256:f33c4882dd5a811cbda2bc5e2a9422915e840415e95551f41ed7d39ad52f0602
–> docker: Imported Docker image: bjuniow/ubuntu:0.1

    Veja que apenas com este comando ele criou uma nova imagem, como podemos verificar no nosso docker:

$ docker images

    Podemos ver que foi criado a imagem como especificamos no arquivo de configuração packer.json.  Você pode realizar testes alterando o item changes do arquivo de acordo com seu dockerfile.

   Como sempre tento fazer posts bem diretos e seguindo o máximo a documentação , para não complicar muito. Espero ter colaborado e na sequencia devo criar outras imagens docker e vmware(pois vejo o pessoal realizando mais procedimentos pra aws).

Fonte: https://www.packer.io

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s