Cómo parchear los equipos de Linux que residen en un entorno desconectado

Si tiene equipos clientes de Linux que residen en un entorno desconectado, el agente no podrá utilizar YUM para descargar paquetes RPM desde internet. En lugar de eso, deberá hacer lo siguiente:

  • Ajuste y rellene uno o más repositorios locales "in situ" que contengan toda la biblioteca de RPM disponibles
  • Configure sus equipos clientes para que busquen el repositorio local correcto en busca de RPM ausentes, en lugar de hacerlo desde internet.

La información siguiente es una ayuda general para configurar y usar un repositorio local. Si tiene preguntas o problemas específicos, contacte con el proveedor del sistema operativo Linux.

Cómo configurar un repositorio local

Requisitos

Puede usar cualquier equipo servidor de Linux como repositorio local. El único requisito es que tenga suficiente espacio en el disco para contener todo el inventario de paquetes RPM disponibles. Hay muchos repositorios públicos distintos que contienen paquetes RPM. Por ejemplo, hay un repositorio público para RPM del servidor RHEL 9, otro repositorio público para RPM de estaciones de trabajo de RHEL 8, etc. Como norma general, el equipo de repositorio local deberá tener, al menos, 100 GB de espacio para cada repositorio público que descargue.

Es probable que necesite dos o más equipos de servidores Linux para este proceso.

  • Escenario 1: puede elegir usar un equipo que se usará como repositorio local para todas las versiones de RPM. En este escenario, el equipo que usted usa como repositorio puede descargar RPM de la misma versión que la distribución que se usa en el equipo del repositorio. No obstante, necesitará un equipo distinto para descargar los RPM para cada versión de cada distribución que se utilice en su empresa.
  • Por ejemplo, si su empresa tiene equipos clientes de RHEL 9 x64, RHEL 8 x64 y CentOS 7 x64, puede usar un equipo servidor RHEL 9 x64 como repositorio local y usarlo para descargar todos los RPM para sus servidores, estaciones de trabajo, equipos de sobremesa, etc. de RHEL 9. Usará equipos RHEL 8 x64 y CentOS 7 x64 distintos para descargar todos los RPM para los servidores RHEL 8 y CentOS, estación de trabajo, escritorios, etc. y luego transferir esos RPM al equipo repositorio local.

  • Escenario 2: puede elegir mantener tres repositorios locales distintos: uno para todos los RPM de RHEL 9, otro para todos los RPM de RHEL 8 y un tercero para todos los RPM de CentOS 7. Este escenario requiere tres equipos dedicados que actúen como repositorios pero elimina el paso adicional de transferencia y la dificultad de mantener el repositorio conjunto.

Proceso de configuración

Debido a que es probable que la descarga al repositorio local de toda la biblioteca de paquetes RPM disponibles puede tardar varias horas, es recomendable realizar el proceso de configuración en dos fases diferentes. Fase 1, en la que descargará todos los RPM disponibles, se deberá realizar al final del día de trabajo para que el proceso de descarga se pueda ejecutar durante la noche. La fase 2 se puede realizar al día siguiente.

Debe tener privilegio raíz para ejecutar los comandos siguientes.

Fase 1

  1. Cree el directorio que desee usar como repositorio.
    Por ejemplo, el siguiente comando crea un directorio que se usará para contener los RPM de Red Hat 9.
  2. mkdir –p /repos/redhat/7

  3. Muestre la lista de repositorios públicos que están disponibles para usar para rellenar el repositorio local.
    Los repositorios públicos que hay disponibles se basan en su suscripción RHEL.
  4. yum repolist

  5. Usando YUM, instale el paquete que incluya reposync.
  6. yum instala yum-utils

  7. Descargue todos los paquetes disponibles del repositorio público de su elección.
    Por ejemplo, el siguiente comando descarga los RPM desde el repositorio público rhel-9-for-x86_64-baseos-rpms.
  8. reposync –-gpgcheck –l –-repoid=rhel-7-server-rpms –-download_path=/repos/redhat/7

    El proceso de descarga durará bastante, téngalo en cuenta. La opción -gpgcheck elimina los paquetes que no superan la comprobación de firma durante el proceso de descarga.

  9. Repita el paso 3 para cada variante del repositorio público requerido.
  10. Por ejemplo, si su empresa dispone de RHEL 9 tanto en Intel como en ARM, deberá descargar los RPM de ambos repositorios públicos asociados. Es posible que necesite varios días para llevar a cabo todas las descargas necesarias.

    No intente descargar RPM para una versión distinta de Red Hat o de CentOS. Por ejemplo, un equipo RHEL 9 no se puede usar para descargar RPM para equipos RHEL 8 x64 o para equipos RHEL 7 x64.

Fase 2

El proceso que se describe aquí crea un repositorio accesible a través de HTTP. Se pueden usar otros métodos para crear un repositorio. Tiene libertad para usar cualquier método que le resulte más familiar.

  1. Mediante YUM, instale el programa que proporciona la capacidad de crear un repositorio.
  2. yum instala createrepo

  3. Cree el repositorio.
  4. createrepo /repos/redhat/9

    Si recibe un error que indica que no se puede abrir un archivo *.rpm, verifique que no se ha quedado sin espacio en el disco. Si el espacio no es el problema, repita el paso de descarga (paso 3 de la fase 1). Es posible que algunos archivos se omitieran la primera vez que se llevó a cabo la descarga.

  5. Instale el servicio web Apache.
    Esto proporcionará la capacidad de acceder al repositorio local mediante el protocolo HTTP.
  6. yum instala httpd

  7. Abra el puerto 80 de su cortafuegos local.
    Esto se debe a que hemos configurado el repositorio para que use HTTP. HTTPS también es una opción, pero aquí se usa HTTP para simplificar el ejemplo.
  8. Edite el archivo httpd.conf y agregue cualquiera de las siguientes entradas que falten.
  9. vi /etc/httpd/conf/httpd.conf

     

    ServerAdmin root@localhost

    DocumentRoot /var/www/html

    ServerName <machinename>

  10. Enlace el nuevo repositorio en la ubicación del sitio web predeterminado.
  11. ln -s /repos/redhat /var/www/html/redhat

  12. Verifique la sintaxis del servicio web Apache.
  13. httpd -t

  14. Inicie el servicio web Apache.
  15. systemctl start httpd

    Es posible que deba repetir este comando cada vez que se reinicie el servidor. Puede usar los comandos siguientes para iniciar automáticamente el servicio siempre que se reinicie el servidor:
    systemctl enable httpd.

  16. Obtener el archivo zip updateinfo.xml.gz.
  17. Los pasos 9 - 13 solo se aplican a equipos Red Hat.

    yum list-sec

  18. Copie los archivos *updateinfo.xml.gz de la ubicación predeterminada en la carpeta /repodata.
  19. cp /var/cache/yum/x86_64/9rhServer/rhel-9-for-x86_64-baseos-rpms/*updateinfo.xml.gz /repos/redhat/9/repodata/

  20. Descomprima el archivo *updateinfo.xml.gz.
  21. gzip –d /repos/redhat/7/repodata/*updateinfo.xml.gz

  22. Cambie el nombre del archivo *updateinfo.xml para eliminar los caracteres a la izquierda que no sean necesarios.
  23. mv /repos/redhat/7/repodata/*updateinfo.xml /repos/redhat/7/repodata/updateinfo.xml

  24. Modifique el repositorio para reconocer que contiene el archivo updateinfo.xml
  25. modifyrepo /repos/redhat/7/repodata/updateinfo.xml /repos/redhat/7/repodata/

  26. (Solo se aplica a equipos que tengan habilitado SELinux) Proporcione permiso para que www/html/redhat acceda a /repos/redhat.
  27. cd /var/www/html

    chcon -R -t httpd_sys_content_t redhat/

Repita el proceso de configuración para otras versiones y distribuciones de Linux

Deberá repetir parte o todo el proceso de configuración para cada versión distinta de cada distribución de Linux que se admita en su empresa. Por ejemplo, debe usar un equipo RHEL 9 para descargar los RPM de RHEL 9, un equipo CentOS 7 x64 para descargar los RPM CentOS 7 x64, un equipo RHEL 8 x64 para descargar los RPM de RHEL 8 x64, etc. Modifique los comandos, como necesite, para cada versión única de Linux.

Escenario 1: si va a usar un repositorio para todas las versiones de Linux

Suponiendo que usa un equipo Red Hat 9 como repositorio, aquí le indicamos lo que debe repetir para recuperar los RPM de Red Hat 8:

  1. En el equipo repositorio de Red Hat 9, repita la fase 1, paso 1 a no ser que especifique /repos/redhat/8.
  2. En un equipo Red Hat 8, lleve a cabo la fase 1, pasos 3 y 4.
    En el paso 3, el directorio repos/redhat/9 no existirá en el equipo Red Hat 8, por lo que deberá eliminar la opción -download_path y dejar que vaya a la ubicación predeterminada o especificar una ubicación distinta.
  3. Cuando haya terminado de descargar los RPM, transfiéralos al directorio repos/redhat/8 de su repositorio local.
    Cuando termine, tendrá un repositorio en un equipo que contendrá los paquetes RPM de todas las versiones soportadas de Red Hat.

Escenario 2: si tiene repositorios distintos para cada versión de Linux

Repita todo el proceso de configuración para cada versión de Linux que sea compatible con su empresa.

Indique el camino al repositorio local para los equipos clientes de Linux

Debe modificar YUM en cada cliente de Linux para que busque el repositorio local en busca de los RPM, y no lo haga en internet.

Si elige mantener un repositorio local distinto para cada versión de Linux, asegúrese de que apunta a cada cliente hacia el repositorio local correcto.

  1. Inicie sesión en el equipo cliente.
  2. Cambie al directorio que enumere dónde se ubican los repositorios.
  3. cd /etc/yum.repos.d

  4. Cree un archivo denominado local.repo y configúrelo para que indique la ubicación del repositorio local.
  5. nano local.repo

    [mylocalrepo]

    name=Local Rhel7 Server Repo

    baseurl=http://es-nxt-rhel9-repo.example.com/redhat/9

    gpgcheck=0

  6. Especifique que si falta un RPM en el repositorio local, el cliente no deberá intentar localizarlo en internet (desconecta el equipo cliente).
  7. Es

    vi cualquier archivo menos local.repo (ejemplo redhat.repo)

    Busque su repoid (ejemplo rhel-9-for-x86_64-baseos-rpms)

    Ajustar habilitado = 0

Mantenimiento periódico de su repositorio

Deberá mantener al día su repositorio local realizando sincronizaciones periódicas con el repositorio público. Cuando lleva a cabo el comando siguiente, solo los paquetes RPM nuevos se descargarán en el repositorio local.

reposync –gpgcheck –l –repoid=rhel-7-server-rpms –download_path=/repos/redhat/7

createrepo --update /repos/redhat/9

Redes Air Gap

Si su organización mantiene una red "air gap", que quiere decir que no permite a ningún equipo cliente conectarse a ningún equipo que tenga acceso a internet; debe configurar y mantener un segundo repositorio. Esto se ilustra en el siguiente diagrama.

En este caso, después de configurar el repositorio conectado como se describe arriba, configurará un segundo repositorio en un equipo desconectado y luego usará un medio extraíble para transferir manualmente los archivos del repositorio conectado al repositorio desconectado. Sus equipos clientes Linux se deberán configurar para indicar la ubicación del repositorio desconectado, en lugar del repositorio conectado.

Información relacionada

https://access.redhat.com/solutions/23016