Nexus OSS: Repo Manager

No cenário actual do meu homelab tenho servers que estão em um ambiente sem acesso a internet, e por varias vezes me encontro em situações em que preciso instalar pacotes via pip, ou yum em vários servers, e sem acesso a internet falha.

Baixar manualmente e fazer upload para os servers? Não! Sem contar que é preciso resolver as dependências.

Ainda existe casos em que o mesmo pacote ou container image precisa ser feito deploy em vários servers ou containers host “para containers sei que posso usar harbor ou gitlab regitry, e bom é assuntos para  um proximo post”, mas ter que baixar image do Docker Hub 2 ou 3 vezes ou fazer export e load da image é com certeza doloroso e não é opção para mim.

Também dar acesso a internet a todos os servers não é opção no momento para mim e não acho boa ideia. Diante desse cenário, cheguei a conclusão que precisava de um repo manager leve para servir de proxy a cache dos pacotes e vários artefactos que utilizo.

Então, preciso de um repositório centralizado que providencie cache de pacotes, artefactos no geral.

Nexus OSS

Nexus repository manager, é um gestor de repositórios, open source que permite guardar vários tipos de artefactos, de forma eficiente funciona como biblioteca (proxy e cache) e ajuda a distribuir, partilhar esses artefactos, softwares internamente na sua organização.

Os formatos de repositórios que o Nexus suporta:

Deployment

Não irei usar o binário de instalação para instalar num Linux Server, o Nexus esta disponível em container o que facilita o deployment, você pode baixar a imagem no docker hub https://hub.docker.com/r/sonatype/nexus3/

O meu deployment será baseado em docker container, e ao executar o container do nexus irei publicar as ports:

  • 8081-> default nexus
  • 8085 -> para docker hub proxy

# criar docker volume

docker volume create nexus-data

#executar

docker run -d -p 8081:8081 -p 8085:8085 –name nexus -v nexus-data:/nexus-data sonatype/nexus3

Abrir no browser

http://localhost:8081/

Sign in

#Para obter a password de admin, executar na CLI onde correr o container

docker exec -it nexus cat /nexus-data/admin.pass

copiar o output, é a password do user admin para logar no Nexus

NEXT

setar nova passwrod passwd

Habilitar acesso anónimo aos repos, sem necessitar de autenticação, NEXT

Configuração de REPO

Vou configurar repo proxy do Rocky Linux que contém os pacotes BaseOS

Repositories-> Create repository

O package manager do Rocky Linux é YUM… clicar yum(proxy)

Definir o Name e URL, url Rocky Linux possui varias url de repo disponíveis para mirror, basta escolher uma: https://mirrors.rockylinux.org/mirrormanager/mirrors

Clicar create repository

Repo criado

Com o repo YUM criado, agora é necessário configurar yum do lado do cliente Rocky Linux OS, indicar o nexus server como source repo.

# no client criar o ficheiro Nexus.repo

vi /etc/yum.repos.d/Nexus.repo

[Nexus-BaseOS]
name=Rocky $releasever - Nexus_BaseOS
baseurl=http://192.168.10.145:8081/repository/BaseOS/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

#Disablitar o default baseos que esta apontar para url externa/internet

yum-config-manager appstream baseos extras –disable

#limpar cache

yum clean all

#instalar nfs

yum install nfs-utils -y

No final, abrir o nexus e fazer browser no repo em causa BaseOS e podemos ver o pacote rpm que foi baixado e armazenado no nexus. E assim, o próximo client que for a fazer o mesmo pedido utilizará o nexus, e o mesmo não irá a internet baixar o mesmo pacote visto que já esta em cache.

Outra funcionalidade interessante do nexus, conseguimos ter info sobre o package e vulnerabilidades relacionadas ao mesmo. Nexus possui muito mais features que podem ser exploradas como por exemplo, cleanup policies para limpar os repos em x periodo,. e routing tables semelhante a ACL para filtrar o acesso ao repôs via rede/server IP, aconselho a dar uma vista de olhos nesse software open source.

No próximo post irei abordar a criação de repo Pypi e Docker, que são super úteis num ambiente dev.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s