Como crear y configurar un Servidor de Repositorios Local

En este ejercicio vamos a ver como configurar nuestro servidor de repositorios locales con el fin de que las maquinas de la red se actualicen, o porque no; tambien puedan realizar instalaciones automatizadas.

Pero vamos a enfocarnos en como construir este servidor con los sisguientes datos. Vamos a partir de dos maquinas virtuales:

Server: repos.example.com 192.168.4.100
Cliente: class2.example.com 192.168.4.110

Es importante aclarar que este ejercicio se realizara en una maquina virtual con recursos limitados, si usted va a implementar esto en una empresa, por favor haga primero su analisis, para saber recursos que va a necesitar.

Vamos a configurar este servidor de dos formas, las cuales creo que son las mas utilizadas. Un servidor Apache o FTP.

Vamos a comenzar con el metodo de Apache, para esto vamos a instalar los paquetes necesarios en nuestro servidor:

[root@repos ~]# yum install -y httpd
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
OS                                                              | 4.1 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7 will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7 for package: httpd-2.4.6-45.el7.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-3.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-45.el7 will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================
 Package                Arch              Version                  Repository     Size
=======================================================================================
Installing:
 httpd                  x86_64            2.4.6-45.el7             OS            1.2 M
Installing for dependencies:
 apr                    x86_64            1.4.8-3.el7              OS            103 k
 apr-util               x86_64            1.5.2-6.el7              OS             92 k
 httpd-tools            x86_64            2.4.6-45.el7             OS             84 k
 mailcap                noarch            2.1.41-2.el7             OS             31 k

Transaction Summary
=======================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 1.5 M
Installed size: 4.3 M
Downloading packages:
---------------------------------------------------------------------------------------
Total                                                     3.8 MB/s | 1.5 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-3.el7.x86_64                                              1/5 
  Installing : apr-util-1.5.2-6.el7.x86_64                                         2/5 
  Installing : httpd-tools-2.4.6-45.el7.x86_64                                     3/5 
  Installing : mailcap-2.1.41-2.el7.noarch                                         4/5 
  Installing : httpd-2.4.6-45.el7.x86_64                                           5/5 
OS/productid                                                    | 1.6 kB  00:00:00     
  Verifying  : httpd-tools-2.4.6-45.el7.x86_64                                     1/5 
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                         2/5 
  Verifying  : mailcap-2.1.41-2.el7.noarch                                         3/5 
  Verifying  : httpd-2.4.6-45.el7.x86_64                                           4/5 
  Verifying  : apr-1.4.8-3.el7.x86_64                                              5/5 

Installed:
  httpd.x86_64 0:2.4.6-45.el7                                                          

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7                     apr-util.x86_64 0:1.5.2-6.el7           
  httpd-tools.x86_64 0:2.4.6-45.el7            mailcap.noarch 0:2.1.41-2.el7           

Complete!
[root@repos ~]#

Una vez terminado, pues vamos a proceder con crear nuestro primer repo. El cual sera el base. Este primer repositorio sera el que utilizamos para la instalacion. Entonces vamos a copiar el contenido completo del DVD de instalacion para el directorio correspondiente. Pero antes de eso, no se olvide de iniciar, habilitar el servicio; y lo mas impostante abrir el firewall.

[root@repos ~]# systemctl start httpd ; systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@repos ~]# firewall-cmd --permanent --add-service=http
success
[root@repos ~]# firewall-cmd --reload
success
[root@repos ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 
  
[root@repos ~]#

Listo, ahora si vamos a proceder a copiar el contenido del DVD para nuestro directorio que vamos a destinar para los repos. Previamente ya yo he montado el DVD en el sistema de archivos.

[root@repos ~]# mkdir -p /var/www/html/repos/rhel7
[root@repos ~]# cp -fr /mnt/iso/* /var/www/html/repos/rhel7/

De esta foma ya hemos copiado todo el contenido del DVD. Es valido aclarar que hay quien prefiere solo copiar los rpm, pero despues de esto debe se ejecutar el comando “createrepo” para que cree la base de datos. Pero como estamos realizando un ejercicio para entender como hacerlo, esto no va ser necesario.

Ahora, cuando intentamos acceder utilizando el navegador en el “cliente” de la siguiente forma obtenemos esto:

Ahora vamos a configurar este server para que lea este repositorio. Para esto entonces vamos a crear el archivo de configuracion correspondiente. Es importante aclarar que utilizo la IP del servidor, ya que no tengo este servidor de repositorios agregado en mi DNS, pero si desea usted puede agregarlo en el archivo “hosts” de este cliente para realizar bien el ejercicio:

[root@class2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.4.100 repos.example.com respo
[root@class2 ~]# cat > /etc/yum.repos.d/local_network.repo <<EOF
> [repos]
> name = Local Network Repos
> baseurl = http://repos.example.com/repos/rhel7
> enabled = 1
> gpgcheck = 0
> EOF
[root@class2 ~]#

Listo, ahora vamos a ver si podemos instalar desde el servidor de repositorios.

[root@class2 ~]# yum repolist 
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repos                                                                                           | 4.1 kB  00:00:00     
(1/2): repos/group_gz                                                                           | 136 kB  00:00:00     
(2/2): repos/primary_db                                                                         | 3.9 MB  00:00:00     
repo id                                           repo name                                                      status
repos                                             Local Network Repos                                            4,751
repolist: 4,751
[root@class2 ~]# yum install httpd
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7 will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7 for package: httpd-2.4.6-45.el7.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-3.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-45.el7 will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================
 Package                       Arch                     Version                          Repository               Size
=======================================================================================================================
Installing:
 httpd                         x86_64                   2.4.6-45.el7                     repos                   1.2 M
Installing for dependencies:
 apr                           x86_64                   1.4.8-3.el7                      repos                   103 k
 apr-util                      x86_64                   1.5.2-6.el7                      repos                    92 k
 httpd-tools                   x86_64                   2.4.6-45.el7                     repos                    84 k
 mailcap                       noarch                   2.1.41-2.el7                     repos                    31 k

Transaction Summary
=======================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 1.5 M
Installed size: 4.3 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): apr-1.4.8-3.el7.x86_64.rpm                                                               | 103 kB  00:00:00     
(2/5): apr-util-1.5.2-6.el7.x86_64.rpm                                                          |  92 kB  00:00:00     
(3/5): httpd-tools-2.4.6-45.el7.x86_64.rpm                                                      |  84 kB  00:00:00     
(4/5): mailcap-2.1.41-2.el7.noarch.rpm                                                          |  31 kB  00:00:00     
(5/5): httpd-2.4.6-45.el7.x86_64.rpm                                                            | 1.2 MB  00:00:00     
-----------------------------------------------------------------------------------------------------------------------
Total                                                                                  1.2 MB/s | 1.5 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-3.el7.x86_64                                                                              1/5 
  Installing : apr-util-1.5.2-6.el7.x86_64                                                                         2/5 
  Installing : httpd-tools-2.4.6-45.el7.x86_64                                                                     3/5 
  Installing : mailcap-2.1.41-2.el7.noarch                                                                         4/5 
  Installing : httpd-2.4.6-45.el7.x86_64                                                                           5/5 
repos/productid                                                                                 | 1.6 kB  00:00:00     
  Verifying  : httpd-tools-2.4.6-45.el7.x86_64                                                                     1/5 
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                         2/5 
  Verifying  : mailcap-2.1.41-2.el7.noarch                                                                         3/5 
  Verifying  : httpd-2.4.6-45.el7.x86_64                                                                           4/5 
  Verifying  : apr-1.4.8-3.el7.x86_64                                                                              5/5 

Installed:
  httpd.x86_64 0:2.4.6-45.el7                                                                                          

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7              apr-util.x86_64 0:1.5.2-6.el7         httpd-tools.x86_64 0:2.4.6-45.el7        
  mailcap.noarch 0:2.1.41-2.el7        

Complete!
[root@class2 ~]#

Y como pueden ver, si podemos instalar desde el servidor. Pero si se percatan, cuando accedemos al servidor por el navegador solamente escribiendo el nombre del servidor tenemos la siguiente imagen:

Esto es de la pagina de “Welcome”, entonces para evitarnos esta molestia, podemos eliminar o comentar tolas las lineas dentro del archivo welcome.conf

[root@repos ~]# vim /etc/httpd/conf.d/welcome.conf 
[root@repos ~]# cat /etc/httpd/conf.d/welcome.conf
# 
# This configuration file enables the default "Welcome" page if there
# is no default index page present for the root URL.  To disable the
# Welcome page, comment out all the lines below. 
#
# NOTE: if this file is removed, it will be restored on upgrades.
#
#<LocationMatch "^/+$">
#    Options -Indexes
#    ErrorDocument 403 /.noindex.html
#</LocationMatch>

#<Directory /usr/share/httpd/noindex>
#    AllowOverride None
#    Require all granted
#</Directory>

#Alias /.noindex.html /usr/share/httpd/noindex/index.html
[root@repos ~]# systemctl restart httpd

Ya habiendo realizado este cambio, pues reiniciamos el servicio de apache y cuando refrescamos el navegador en el cliente, ya vamos a tener nuestro repo.

Entonces, ahora vamos a ver como nos queda nuestro servidor si decidimos hacerlo via ftp. Para comenzar pues debemos de instalar el paquete necesario, y como de costumbre, iniciar y habilitar el servicio; y abrir el firewall.

[root@repos ~]# yum install -y vsftpd
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-21.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================
 Package                       Arch                          Version                              Repository                 Size
==================================================================================================================================
Installing:
 vsftpd                        x86_64                        3.0.2-21.el7                         OS                        169 k

Transaction Summary
==================================================================================================================================
Install  1 Package

Total download size: 169 k
Installed size: 348 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : vsftpd-3.0.2-21.el7.x86_64                                                                                     1/1 
  Verifying  : vsftpd-3.0.2-21.el7.x86_64                                                                                     1/1 

Installed:
  vsftpd.x86_64 0:3.0.2-21.el7                                                                                                    

Complete!
[root@repos ~]# systemctl start vsftpd
[root@repos ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@repos ~]# firewall-cmd --permanent --add-service=ftp 
success
[root@repos ~]# firewall-cmd --reload
success
[root@repos ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client ftp http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 
  
[root@repos ~]#

Hasta este punto, podemos acceder al ftp por el navegador desde el cliente.

Pero como pueden ver el directorio “pub” esta vacio. Esto es porque aun no hemos copiado el repositorio para el lugar correspondiente. Con el proposito de ahorar en recursos, yo voy a mover el contenido desde el directorio que utilizamos para ver la demostracion via apache.

[root@repos ~]# mv -f /var/www/html/repos /var/ftp/pub/

Este comando se ejecuta bien rapido, ya que estamos moviendo dentro del mismo sistema de archivos. Ahora solo nos queda cambiar la configuracion de nuestro cliente para que lea el repo. Para esto vamos a eliminar la configuracion existente y crear una nueva.

Pero antes de esto, si usted esta siguiente esta guia, me refiero, a que realizo la configuracion de apache y ahora esta realizando esta. Debe tener en cuenta que cuando utilizamos el comando “mv” el “fcontext” de los archivos preservan el valor en donde estaban anteriormente. Por lo que si comprueba con el siguiente comando:

[root@repos ~]# ls -lZd /var/ftp/pub/
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp/pub/
[root@repos ~]# ls -lZd /var/ftp/pub/repos/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/ftp/pub/repos/
[root@repos ~]#

Esto quiere decir que debemos restuarar el “fcontext”, para esto ejecutamos:

[root@repos ~]# restorecon -R /var/ftp/pub/repos

Una vez terminada la ejecucion de este comando pues podemos comprobar en en navegador que vemos el repo completo:

Entonces ahora si vamos a crear el archivo nuevo y comprobar que podemos instalar desde el repositorio via ftp:

[root@class2 ~]# rm -rvf /etc/yum.repos.d/local_network.repo 
removed ‘/etc/yum.repos.d/local_network.repo’
[root@class2 ~]# cat > /etc/yum.repos.d/ftp_network.repo <<EOF
> [ftp]
> name = Repo via FTP
> baseurl = ftp://repos.example.com/pub/repos/rhel7
> enabled = 1
> gpgcheck = 0
> EOF
[root@class2 ~]# yum clean all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Cleaning repos: ftp
Cleaning up everything
[root@class2 ~]# yum repolist 
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
ftp                                                                                             | 4.1 kB  00:00:00     
(1/2): ftp/group_gz                                                                             | 136 kB  00:00:00     
(2/2): ftp/primary_db                                                                           | 3.9 MB  00:00:01     
repo id                                               repo name                                                  status
ftp                                                   Repo via FTP                                               4,751
repolist: 4,751
[root@class2 ~]# yum install -y vsftpd
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-21.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================
 Package                    Arch                       Version                           Repository               Size
=======================================================================================================================
Installing:
 vsftpd                     x86_64                     3.0.2-21.el7                      ftp                     169 k

Transaction Summary
=======================================================================================================================
Install  1 Package

Total download size: 169 k
Installed size: 348 k
Downloading packages:
vsftpd-3.0.2-21.el7.x86_64.rpm                                                                  | 169 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : vsftpd-3.0.2-21.el7.x86_64                                                                          1/1 
ftp/productid                                                                                   | 1.6 kB  00:00:00     
  Verifying  : vsftpd-3.0.2-21.el7.x86_64                                                                          1/1 

Installed:
  vsftpd.x86_64 0:3.0.2-21.el7                                                                                         

Complete!
[root@class2 ~]#

Perfecto! Como pueden ver asi tenemos nuestro servidor de repositorios local configurado. Usted lo puede hacer de la forma que le sea mas facil.

Leave a Reply

Your email address will not be published. Required fields are marked *