Cómo crear un repositorio local de YUM con acceso http
En el artículo aprenderemos a crear un repositorio local de YUM con acceso http, esto es, un mirror de los repositorios de CentOS 7, con acceso vía web, a nivel local.
Esto puede ser muy útil en redes que no queremos que estén expuestas a Internet pero que si queremos que puedan acceder a las últimas versiones de los paquetes RPM, gestionados por el gestor YUM
Crear repositorio local de YUM con acceso http
Para ello vamos a utilizar un host con un sistema operativo Centos 7, al cual le instalaremos una serie de paquetes; primero de todo, para tener acceso a los paquetes vía web, instalaremos el servidor web Apache
Instalamos:
yum install httpd
Para operar con el servidor web Apache, podéis consultar el artículo que escribí en su día llamado “Arranque y parada de un servidor web Apache Linux”
Si tenemos el cortafuegos habilitado, recuerda abrir los puertos, ‘80’ o ‘443’, en el caso que utilicemos HTTPS
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
Una vez hecho esto ya podemos acceder vía web:
Crear repositorio YUM local
Debemos primero instalar los paquetes necesarios para crear, configurar y manejar repositorios:
yum install createrepo yum-utils
Antes de continuar, os comento que, ya que los repositorios ocupan mucho espacio, es recomendable, si tenemos esa posibildiad, utilizar un recurso NFS, desde una cabina de discos o NAS, que es justo lo que he hecho yo.
Ya os comenté que tengo una cabina Synology; desde esta he compartido una carpeta vía NFS y la he montado justo en «/var/www/html/repos», tal como sigue:
#Editamos el fichero /etc/fstab
192.168.0.200:/volume1/MirrorCentos /var/www/html/repos nfs defaults 0 0
Creamos la carpeta donde irán los ficheros de los repositorios:
mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
Utilizamos la herramienta “reposync” para sincronizar los repositorios oficiales:
reposync -g -l -d -m --repoid=base --newest-only --download-metadata \
--download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata \
--download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata \
--download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=updates --newest-only --download-metadata \
--download_path=/var/www/html/repos/
Podemos comprobar que efectivamente se han sincronizar los paquetes, por ejemplo:
ls -l /var/www/html/repos/base/
Otro paso más es crear los ficheros con los metadatos:
createrepo /var/www/html/repos/base/
createrepo /var/www/html/repos/centosplus/
createrepo /var/www/html/repos/extras/
createrepo /var/www/html/repos/updates/
Para actualizar la información sería así:
createrepo --update /var/www/html/repos/base/
createrepo --update /var/www/html/repos/centosplus/
createrepo --update/var/www/html/repos/extras/
createrepo --update /var/www/html/repos/updates/
Creamos el fichero del Virtual Host para Apache:
vim /etc/httpd/conf.d/repos.conf
Con la información:
<VirtualHost *:80>
ServerName ejemplo.repos
ServerAlias ejemplo.repos.com
DocumentRoot /var/www/html/repos
ErrorLog /var/log/httpd/repos.error.log
CustomLog /var/log/httpd/repos.access.log combined
<Directory /var/www/html/repos>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Allow from all
</Directory>
</VirtualHost>
Reiniciamos Apache y ya podemos acceder vía web:
http://ip-del-host/repos
Crear tarea diaria de sincronización utilizando Cron
Nos interesa tener siempre sincronizado los repositorios, por lo que crearemos una tarea diaria para la sincronización de los repositorios:
vi /etc/cron.daily/actualizar-repositorios
Con el contenido:
#!/bin/bash
reposync -g -l -d -m --repoid=base --newest-only \
--download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=centosplus \
--newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=extras \
--newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=updates \
--newest-only --download-metadata --download_path=/var/www/html/repos/
Le damos permiso de ejecución al script:
chmod +x /etc/cron.daily/actualizar-repositorios
Añadir repositorios locales de YUM en host clientes
Una vez ya tenemos la replica de YUM montada en el host central, ahora, para utilizar estos repositorios, los debemos configurar en las máquinas clientes.
Añadiendo este fichero:
vim /etc/yum.repos.d/local-repos.repo
Con la información de los repositorios:
[local-base]
name=CentOS Base
baseurl=http://ip-servidor-central/base/
gpgcheck=0
enabled=1
[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://ip-servidor-central/centosplus/
gpgcheck=0
enabled=1
[local-extras]
name=CentOS Extras
baseurl=http://ip-servidor-central/extras/
gpgcheck=0
enabled=1
[local-updates]
name=CentOS Updates
baseurl=http://ip-servidor-central/updates/
gpgcheck=0
enabled=1
Y con esto ya lo tenemos listo.
Espero que la información os sea de utilidad en algún momento. Nos vamos leyendo.
Para elaborar el artículo me he consultado los siguientes enlaces:
Tecmint.com – How to Setup Local HTTP Yum Repository
rm-rf.es – Cómo crear un repositorio local de yum
Bencame.com – Creating a local YUM Repository