Como configurar um repositório Yum local com Nexus Sonatype

Como configurar um repositório Yum local 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 Conheça a Linux Developer Conference Brasil: o ponto de encontro para desenvolvedores
Próxima Curso Exclusivo 4Linux: Aprenda a montar uma rede Blockchain com Hyperledger Fabric

About author

Julio Ballot
Julio Ballot 8 posts

Júlio Rangel Ballot, atua como Consultor de TI 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á 13 anos na área de Tecnologia da Informação. Detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, sendo certificado LPIC-2, LPIC - DevOps Tools Engineer, Exin DevOps Master e MongoDB Administrator.

View all posts by this author →

Você pode gostar também

Cloud

Entenda o Terraform e como ele se encaixa na Infraestrutura Ágil

Antes de entendermos como o Terraform funciona na prática é necessário compreendermos do que se trata a infraestrutura ágil e onde o Terraform se encaixa. Infraestrutura Ágil Infraestrutura ágil é

DevOps

Como resolver problemas de dependências de projeto com o servidor de automação Jenkins

Jenkins é um servidor de automação, independente e de código aberto, usado para automatizar todos os tipos de tarefas relacionadas à criação, teste e distribuição ou implementação de software. Recentemente,

Segurança

Entenda o SAST e como implementar com o Horusec em seu projeto

Saudações pessoal! Nós já falamos por aqui sobre DevSecOps e como implementar em nosso ciclo de desenvolvimento. Neste post iremos entrar em uma das etapas mais importantes deste ciclo de