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

DevOps

Conheça a experiência de um Arquiteto de Software no mundo DEVOPS

No último dia 3 de setembro aconteceu a prova beta test na sede da 4Linux em SP. Foram mais de 150 inscritos que fizeram a prova de seleção na plataforma

DevOps

Como usar o Kaniko para criar imagens de contêineres no GitLab CI/CD

Hoje, no blog da 4Linux, vamos falar sobre o CI/CD especificamente do Gitlab CI e em como podemos fazer o build de uma imagem de um container de forma facilidade

DevOps

Migrando dados do Moodle de PostgreSQL para Elasticsearch: um guia passo a passo

Recebi a missão de gerar relatórios e estatísticas com os dados do Moodle. Porém, o LMS trabalha somente com bancos de dados relacionais como PostgreSQL e MySQL. O ambiente que