Repositório Sonatype Nexus no Raspberry Pi

Publicado por Bruno Cantisano em

Olá, meu nome é Bruno Cantisano e sou Arquiteto de Soluções na Ipiranga. Estou na área de computação desde 1991, quando fiz meu primeiro curso de Basic. Praticava em um PC XT com monitor fósforo verde e me divertia jogando “Prince of Persia” nele. Naquela época o windows do momento era Windows 1.04 e ainda não existiam navegadores web porque a internet só foi aberta ao público em 1992 no Brasil.

Dados eram comprimidos por linha de comando no rar, um jogo mais sofisticados como Mortal Kombat, era em 7 disquetes porque ainda não existiam CD-Roms.

Prince Of Persia
PC XT

Muita coisa dessa época mudou e hoje em dia temos computadores bem melhores e com capacidade de processamento e armazenamento muito melhores a um custo bem baixo. Um exemplo de um deles é o Raspberry Pi, invenção inglesa que surgiu em fevereiro de 2012 e que possui várias versões diferentes.

Atualmente a versão mais sofisticada é a versão 4. Nessa placa, do tamanho de um cartão de crédito, todo o hardware é integrado. O principal objetivo de sua criação era promover o ensino em escolas, mas é excelente tanto para a indústria quanto para a implementação de casas inteligentes, o chamado: IOT ou Internet das Coisas. É uma ferramenta acessível para testar idéias principalmente na área de Inovação Tecnológica.

Raspberry Pi 4
Raspberry Pi 4 – Duas entradas HDMI, Ethernet, Bluetooh, Wi-Fi , 2 USB 2.0 e 2 USB 3.0.

Com um Raspberry Pi, o usuário pode experimentar novas possibilidades e aprender um pouco mais sobre computação, eletrônica e até para desenvolvimento de software com IOT.

Neste tutorial, iremos aprender a subir um servidor de artefatos (Nexus Sonatype) em um Raspberry Pi a fim de ter um ambiente pequeno para desenvolvedores utilizarem em seus projetos.

Para operar as funcionalidades você precisará usar a ferramenta Makefile.

  • Definição:
    • Um arquivo Makefile é um arquivo contendo um conjunto de diretivas usadas pela ferramenta de automação de compilação make para gerar um alvo/meta. Sua função é direcionar o make sobre como compilar e vincular um programa.

Premissas

  1. Conhecimento em docker (versão do Docker > 1.12.3)

Referências:

  • help: descreve as tarefas
  • clean: remove a pasta node_modules
  • repo-login: faz login no dockerhub
  • build: crio container
  • build-nc: crio container sem cache
  • remove: remove imagem
  • rebuild: chama as tarefas de remove e build
  • save: salva imagem em arquivo
  • load: carrega imagem previamente salva
  • push: publica o container no repositório de artefatos
  • pull: faz o download do container no repositório de artefatos
  • run: inicializa o container
  • up: roda as tarefas: build e run
  • dev: roda as tarefas: build-nc e run
  • stop: para o container e remove a execução
  • sonar: roda a análise de código no sonar
  • dangling: remove todas as imagens do tipo dangling (temporárias)
  • publish-latest: publica a imagem criada como última no ecr (repositório de artefatos)
  • publish-version: publica a imagem com a versão corrente no ecr (repositório de artefatos)
  • publish: roda as tarefas: repo-login, publish-latest e publish-version
  • tag-version: nomeia a imagem com a versão corrente
  • tag-latest: nomeia a imagem criada como última
  • tag: roda as tarefas: tag-latest e tag-version
  • removecontainers: para todos os containers em execução e remove
  • create-dir:: cria o diretório do nexus-data
  • sonar: roda o sonar-scanner para fazer a análise pelo sonar

Como funciona:

  • Cria o diretório a ser utilizado pelo Nexus
make create-dir
make run
  • Rodar comando para descobrir a senha:
make nexus-pass

Exemplo de resultado da execução:

51bed803-7f61-4c90-97cc-5eac58f502e3
  • Logar no sistema:

Imagens

  • URL para acesso:
  • Trocar a senha para: admin123

Usando Nexus 3 como seu repositório de artefatos de imagens Docker

O que faremos:

  • Criar um repositório privado (hospedado) para nossas próprias imagens
  • Criar um repositório proxy apontando para o Docker Hub
  • Criar um repositório de grupo para fornecer todos os repositórios acima em uma única URL.

Crie um novo repositório de blobs para cada novo repositório que você deseja criar. Dessa forma, os dados para cada “repo” estarão em uma pasta diferente em /nexus-data (dentro do contêiner do Docker). Isso não é obrigatório para que funcione porque por padrão o cliente Docker se comunica com o repositório usando HTTPS. No meu caso de uso, foi configurado com HTTP.

Importante notar: o repositório do Docker requer 2 portas diferentes. Usaremos 9412 para fazer download do repositório de proxy e 9413 para fazer download e upload para o repositório particular.

Repositório Privado

Um repositório para imagens do Docker que sua equipe cria. Crie um novo repositório do Docker (hospedado) e configure assim:

Docker Blob Private Store
Docker Private

Agora temos que autenticar sua máquina no repositório com:

make repo-login

Repositório Proxy

Um repositório que faz proxy de tudo o que você baixa do registro oficial no Docker Hub. Na próxima vez que você baixar a mesma dependência, ela será armazenada em cache no seu Nexus. Crie um novo repositório do Docker (proxy) e configure-o como:

Docker Blob Store Proxy
Docker Proxy
Docker Proxy2

Repositório de Grupo

Isso agrupará todos os repositórios acima e fornecerá uma URL única para configurar seus clientes para fazer o download. Crie um novo repositório do Docker (grupo) e configure-o como:

Docker Blob Store Group
Docker Group
Docker Group

Você pode criar quantos repositórios precisar e agrupá-los no repositório de grupos. Esta etapa é realmente opcional para usar o Nexus 3 como um repositório do Docker, porque podemos continuar fazendo downloads e uploads para os repositórios proxy e hospedado, como será discutido mais adiante. Configurando seus clientes e projetos para usar seus repositórios Nexus. Para interagir com seu repositório, a primeira coisa é configurar o Docker daemon em sua máquina para aceitar trabalhar com HTTP em vez de HTTPS. Como exatamente fazer essa configuração depende do seu sistema operacional, você deve verificar a documentação do dockerd.

No Raspbian, coloque esse conteúdo em: /etc/docker/daemon.json:

{
  "insecure-registries":
  [
    "raspberrypi:9412",
    "raspberrypi:9413"
  ],
  "debug": true,
  "experimental": true,
  "registry-mirrors": []
}

Onde:

  • raspberrypi é o seu servidor nexus
  • 9412 porta privada do servidor nexus
  • 9413 porta privada do servidor nexus

Você precisa reiniciar o seu daemon depois de setar isso: sudo systemctl restart docker

Configuração para acesso ao repositório:/.docker/config.json

{
  "auths": {
    "raspberrypi:9412": {
      "auth": "YWRtaW46YWRtaW4xMjM="
    },
    "raspberrypi:9413": {
      "auth": "YWRtaW46YWRtaW4xMjM="
    }
  }
}
  • Para construir a imagem sem cache
    • make build-nc
  • Para marcar a imagem com uma tag que aponta para o repositório:
    • make tag
  • Para enviar suas próprias imagens para o seu repositório:
    • make publish
  • Para extrair a imagem do seu repositório, use:
    • make pull

Ambas as portas funcionarão. O uso da porta 9412 será conectado ao repositório do grupo, que contém o repositório hospedado. Atenha-se à porta 9413 para evitar imagens duplicadas em suas máquinas. Se você escolher ficar com a porta 9413 para obter suas próprias imagens, provavelmente poderá pular a criação do repositório de grupo.

É isso aí. Caso tenham gostado e queiram aprender mais sobre IOT, busquem a nossa a garagem digital no G3.

Categorias: IOT

0 comentário

Deixe uma resposta

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

%d blogueiros gostam disto: