Repositórios locais com Nexus Sonatype

Repositórios locais com Nexus Sonatype

Administradores de sistemas, sempre que operam em ambiente GNU/Linux,  realizam a instalação de pacotes pré-compilados localizados em repositórios remotos. Para distribuições baseadas em Red Hat, fazemos uso de repositórios Yum (Yellowdog Updater, Modifier), que armazenam pacotes do tipo RPM. O mesmo vale para distribuições baseadas em Debian, com repositório APT (Advanced Package Tools) e pacotes Deb. Tais repositórios garantem a integridade e disponibilidade dos pacotes, bem como versões para diferentes arquiteturas de sistemas com i386, amd64, arm, etc.

Uma desvantagem no uso de grandes ambientes é o download repetido de pacotes por mais de uma estação, por exemplo, uma park de centenas de servidores web, para um grande portal de notícias precisa realizar o download do pacote do servidor web Nginx para cada máquina. O problema, nesse caso, é o consumo gerado por cada uma das máquinas ao realizar o download. A solução apresentada nesse artigo, constitui uma alternativa a criação manual de repositórios, fazendo, para isso, uso do Nexus Sonatype Repository Manager.

O gerênciador de repositórios Nexus, pode ser utilizado não somente com pacotes Yum, mas também pacotes Maven, PyPi, APT (por meio de plugin), Node, Ruby Gems e outros.

Para esse laboratório, empregaremos CentOS 7 configurando um repositório Yum para nossa rede local.

Pré-Requisitos

Um dos pré-requisitos para instalação do Nexus, é o Java em versão superior a 1.8, provido pelo repositório padrão do CentOS. Para installar o Java execute o comando abaixo:

yum install -y java-1.8.0-openjdk

Instalação

Com isso, conseguimos instalar o Nexus. Realize o download no link https://www.sonatype.com/download-oss-sonatype. Em seguida descompacte o pacote baixado de https://www.sonatype.com/oss-thank-you-tar.gz:

tar -xf oss-thanks-you-tar.gz 

Feito isso, acesse o diretório nexus-$VERSAO/bin. Atenção: $VERSAO correspondente a versão do pacote no seu ambiente.

cd $HOME/nexus-3.12.0-01/bin

Agora execute o binário do nexus com opção start. Assim, iniciaremos o servidor na porta 8081. Espere alguns minutos,  o ambiente será gerado.

./nexus start

Logo que o Nexus terminar a criação do ambiente, o acesso a interface web estará disponível no endereço local pela porta 8081. O login padrão é admin e senha admin123.

Devemos criar um novo repositório para nossos pacotes Yum. O Nexus funcionará como uma repositório proxy para o repositório oficial do CentOS.

Criando um Repositório

Para criar o repositório, faça login e acesse o menu  administrativo na engrenagem, clique em Repositories, como na imagem abaixo, depois “Create respository”.

Agora, basta configurar o nome do novo repositório e o seu endereço para que sirva como proxy. Em nosso caso utilizaremos o nome yum-proxy com endereço http://mirror.centos.org/centos/7/os/x86_64.

Com a configuração quase finalizada, marque a opção Storage como “Default”, clique em “Create repository”. Precisaremos criar um novo arquivo de repositório na distribuição CentOS, que será nosso cliente de testes.

Configurando Cliente

No ambiente CentOS, os arquivos localizados em /etc/yum.repos.d/ armazenam os endereços dos repositórios que a distribuição utilizará. Sempre que uma instalação ou atualização de pacote for feita, o utilitário yum checará esses arquivos, para atualizar a lista de pacotes disponíveis nos repositórios. Feito isso, o download poderá ter início, utilizando o endereço mais adequado ao que se deseja instalar/atualizar.

Para adicionar nosso repositório, crie um novo arquivo dentro deste diretório. Usaremos o nome nexus.repo. Importante manter o padrão: nome-do-arquivo.repo. Deste modo, yum reconhecerá como um arquivo de repositório.

 cd /etc/yum.repos.d/
 vim nexus.repo

Adicione o conteúdo abaixo no arquivo:

[nexusrepo]
name=Nexus Repository
baseurl=http://<endereço-servidor>:8081/repository/yum-proxy/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=1

Agora, basta utilizar o comando yum para instalar qualquer aplicativo. A solicitação será enviada para o Nexus, que se encarregará por realizar o download, mantendo o pacote para futuras atualizações.

Como teste, instalamos o samba e postgresql-server com os comandos que seguem:

yum install -y samba postgresql-server

Após a instalação visualizamos os pacotes no Nexus, bastando para isso voltar ao Home da interface web, clicar em “Browse” e “yum-proxy”.

Verificamos a presença, não somente os pacotes samba e postgresql-server, mas também todas as dependências.

Observações

Nexus Sonatype não é limitado a repositórios Yum, sua configuração pode ser realizada com APT, via pluging e artefatos Maven. Nexus também pode ser integrado com outras ferramentas como Jenkins, possibilitando a integração contínua do ambiente de desenvolvimento. Desta forma, sempre que uma nova build for executada, pacotes do Maven ou PyPi poderão ser adquiridos localmente.

 

 

 

Anterior Evento linuxdev-br - Dia 25 de agosto
Próxima Participe do novo curso da 4Linux e aprenda a construir uma infraestrutura de Blockchain usando HyperLedger.

About author

Julio Ballot
Julio Ballot 1 posts

Júlio Rangel Ballot atua como Analista de Infraestrutura em Software Livre, formado em Engenharia de Computação pela Universidade de Taubaté. Possui experiência em Administração de Sistemas Open Source e ferramentas voltadas a práticas DevOps, com ênfase em CI/CD (Continuous Integration / Continuous Delivery), atuando há 10 anos ná area de Tecnologia da Informação. Detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, sendo certificado LPIC-1 e Exin DevOps Master.

View all posts by this author →

Você pode gostar também

DevOps

Docker Swarm – Criando cluster utilizando Docker Stack Deploy

Swarm é uma ferramenta de cluster nativa para Docker, que utiliza a API padrão. Ou seja, qualquer ferramenta que fizer uso da API Docker, poderá usar Swarm para escalar contêineres,

DevOps

O que é DevOps?

DevOps é um termo criado para descrever um conjunto de práticas para integração entre as equipes de desenvolvimento de softwares, operações (infraestrutura ou sysadmin) e de apoio envolvidas (como controle

Desenvolvimento

Heroku: infraestrutura pronta para uso em cloud

Heroku é atualmente uma das melhores opções PaaS ( Plataform as a Service ) para desenvolvedores fazerem o deploy de suas aplicações. Essa plataforma é muito utilizada nas startups porque