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.