Nota:

Uso de un contenedor para crear un reflejo de repositorio DNF o ULN

Renuncia de Oracle Support

Oracle no proporciona soporte técnico para la secuencia de pasos que se proporcionan en las siguientes instrucciones porque estos pasos hacen referencia a un proyecto de código abierto no proporcionado por Oracle. En este tutorial se proporcionan instrucciones opcionales solo para comodidad.

El método admitido por Oracle para crear reflejos de distribución de software de Oracle Linux es utilizar el comando dnf reposync en un sistema que ejecuta Oracle Linux. Para obtener más información, consulte https://docs.oracle.com/en/operating-systems/oracle-linux/software-management/sfw-mgmt-UseSoftwareDistributionMirrors.html#use-mirrors.

Introducción

Oracle Linux 8 incluye una herramienta reposync totalmente funcional para DNF, que facilita la creación de un reflejo de cualquier repositorio de yum. Esta instalación se puede ampliar para reflejar también los canales ULN para entornos en los que la mayoría de los sistemas no tienen acceso directo a Internet. Al crear un reflejo de yum de los repositorios de yum y los canales ULN que utiliza su organización, puede reducir la sobrecarga de red y mejorar el rendimiento de yum en su entorno. Los reflejos de Yum también son útiles si está configurando otros servicios para su entorno, como Ksplice fuera de línea.

Aunque las versiones anteriores de Oracle Linux incluían un paquete uln-yum-mirror que se podía utilizar para realizar servicios de duplicación, esto no era especialmente eficaz y era relativamente complicado de configurar.

Un servicio de reflejo ULN o yum es un ejemplo típico de un servicio que se ejecuta mejor dentro de un conjunto de contenedores. Mediante Docker o Podman, puede desplegar de forma rápida y sencilla un contenedor que utilice la imagen oraclelinux:8-slim para manejar la sincronización programada de los repositorios de yum o los canales de ULN que utilice en su organización. También puede desplegar un contenedor que maneje el aprovisionamiento de los repositorios reflejados dentro de un servicio web al que los sistemas cliente pueden acceder.

Un proyecto de GitHub de código abierto proporciona los archivos Dockerfile, los scripts y las instrucciones para configurar este tipo de servicio en https://github.com/Djelibeybi/oraclelinux-reposync.

Objetivos

En este laboratorio, aprenderá a:

Requisitos

Instalar los paquetes necesarios

Si aún no está conectado, abra un terminal y conéctese mediante ssh al sistema ol8-server:

ssh oracle@<ip_address_of_ol8-server>

Instale git para poder clonar el repositorio de resincronización de contenedores:

sudo dnf install -y git

Instale podman y las utilidades relacionadas:

sudo dnf module install -y container-tools:ol8

Nota: Si utiliza Oracle Linux 7, los paquetes buildah y skopeo solo están disponibles mediante los repositorios de EPEL no admitidos. Por este motivo, puede optar por utilizar Docker con el fin de crear y ejecutar sus imágenes de contenedor. Puede encontrar más información sobre el uso de Docker en el proyecto de código abierto README.md.

Clonar el repositorio de resincronización de contenedor

Clone el repositorio:

git clone https://github.com/Djelibeybi/oraclelinux-reposync.git
cd oraclelinux-reposync

Crear las imágenes

Cree las dos imágenes de contenedor incluidas en el repositorio:

buildah build-using-dockerfile -t ol-repo-sync .
buildah build-using-dockerfile -t ol-repo-web -f Dockerfile.nginx .

Verifique la creación:

podman images

Crear directorios de almacenamiento adicionales

Se deben crear dos directorios adicionales para que el servicio de resincronización de contenedores funcione correctamente:

Estos directorios se pueden ubicar donde desee, pero se recomienda que los cree junto con la información de configuración de este contenedor. Por ejemplo:

mkdir rhn repo

Definir las variables de configuración para retomync

La imagen ol-repo-sync depende de la información de configuración almacenada en varios archivos de configuración almacenados en el directorio de configuración.

Nota: Se necesita una suscripción de soporte de Oracle Linux para sincronizar desde ULN. Si no tiene una suscripción de soporte, elimine por completo la matriz uln de config/repos.json.

Para un mejor rendimiento de sincronización, utilice la fuente de yum en lugar de uln siempre que sea posible, ya que yum.oracle.com aprovecha la CDN de Akamai y casi siempre tendrá velocidades de descarga mucho más altas que ULN.

  1. (Opcional) Si tiene una suscripción activa de soporte de Oracle Linux:

    cp config/uln.sample.conf config/uln.conf
    

    Sustituya los marcadores de posición por credenciales de Oracle SSO y un CSI activo. Para proteger el contenido de este archivo, ejecute:

    chmod 400 config/uln.conf
    

    Esto evita que nadie, excepto usted, tenga acceso.

  2. Cree un archivo config/repo-map.json ejecutando el siguiente comando:

    podman run --rm -it \
      --name ol-repo-sync \
      -v ${PWD}/config:/config:z \
      -v ${PWD}/repo:/repo:z \
      ol-repo-sync update
    

    Este comando se puede volver a ejecutar en cualquier momento si desea actualizar el archivo config/repo-map.json con la última configuración de repositorio. El comando se debe ejecutar al menos siempre que se publique una nueva actualización o una versión principal para que los nuevos repositorios estén disponibles para la sincronización.

  3. Copiar repos.json

    cp config/repos.sample.json config/repos.json
    

    Agregue todos los repositorios que desee sincronizar con la matriz uln o yum.

    Ejemplo:

    Aquí hay una secuencia de comandos que sincroniza los paquetes Oracle Linux 8 Ksplice aware userspace de ULN y los paquetes Oracle Linux Automation Manager de yum.oracle.com. Si no tiene una cuenta de ULN durante esta práctica, elimine todo el bloque uln.

    echo '{
       "uln": [
            "ol8_x86_64_userspace_ksplice",
            "ol8_aarch64_userspace_ksplice"
        ],   
        "yum": [
            "ol8_x86_64_automation"
        ]
    }' | tee config/repos.json
    

(Opcional) Registre el contenedor con ULN

Si no desea reflejar ningún canal desde ULN, no necesita registrar el contenedor. Si ha introducido las credenciales de ULN en el archivo de configuración de ULN y ha creado un directorio para contener los datos de registro de ULN y ha configurado al menos un canal de ULN en el archivo de configuración de repositorio, debe registrar el contenedor.

El registro se puede realizar ejecutando:

podman run --rm -it \
  -v ${PWD}/rhn:/etc/sysconfig/rhn:z \
  -v ${PWD}/config:/config:z \
  -v ${PWD}/repo:/repo:z \
  ol-repo-sync register

Nota:* Este proceso tardará unos minutos sin salida al terminal, pero debe volver al símbolo del sistema cuando finalice. Los directorios rhn y config del directorio de trabajo actual se asignan al contenedor. Solo tiene que realizar el registro una vez para el contenedor mientras el directorio rhn esté asignado a /etc/sysconfig/rhn para cada contenedor posterior que ejecute.

Rellenar el repositorio de reflejo

Para rellenar el repositorio de duplicación con paquetes de los repositorios y canales configurados, ejecute:

podman run --rm -it \
  -v ${PWD}/rhn:/etc/sysconfig/rhn \
  -v ${PWD}/config:/config \
  -v ${PWD}/repo:/repo:z \
  ol-repo-sync

El contenedor agrega y suscribe automáticamente cada canal configurado en config/repos.json y crea una jerarquía idéntica a la utilizada por el servidor yum de Oracle Linux.

Este comando se puede programar para que se ejecute en un programa recurrente mediante un temporizador cronjob o systemd.

Nota: Este paso tarda un tiempo en completarse, ya que todos los paquetes se descargan localmente en el sistema.

Servir el reflejo local de yum en los sistemas cliente

Utilice la imagen de contenedor ol-repo-web para servir los repositorios de yum a los sistemas cliente. Este contenedor se puede ejecutar de forma permanente y se puede configurar para que se inicie al iniciar:

podman run --detach --name yum-server \
  -p 8080:80 \
  -v ${PWD}/repo:/var/www/html/repo:ro \
  ol-repo-web

Nota: El directorio repo se asigna al contenedor de servidor yum con permisos de solo lectura para permitir que el contenedor continúe ejecutándose y sirva a los clientes mientras se actualizan los repositorios y canales reflejados.

Verificar el reflejo local de yum

Cree una nueva entrada de repositorio dnf con el siguiente contenido:

echo '[ol_automation_http_repo]
name=OL_automation_x86_64_HTTP
baseurl="http://localhost:8080/repo/OracleLinux/OL8/automation/$basearch/"
gpgcheck=0' | sudo tee /etc/yum.repo.d/ol-local.repo

Nota: Si se expone a sistemas externos, cambie el valor de baseurl anterior por la dirección IP o el nombre de host del sistema que ejecuta el contenedor.
Abra también el firewall para permitir el acceso al puerto 8080.

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

A continuación, confirme que la nueva entrada funciona:

dnf repolist
dnf info ansible

Para más información

Consulte otros recursos relacionados:

Más recursos de aprendizaje

Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.

Para obtener documentación sobre los productos, visite Oracle Help Center.