Nota:
- Este tutorial está disponible en un entorno de prácticas gratuitas proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por valores específicos de su entorno en la nube.
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:
- Instalar herramientas de contenedor
- Cree un contenedor con el software necesario
- Crear un servicio de duplicación mediante la recuperación en el contenedor
Requisitos
- Un sistema con Oracle Linux 7 u Oracle Linux 8 instalado y con acceso a Internet.
- En este tutorial se asume que está utilizando Oracle Linux 8, de modo que los comandos de instalación de paquetes utilizan dnf, si utiliza Oracle Linux 7, sustituya estas instrucciones de comandos por yum.
- En este tutorial, utilizamos Podman y Buildah para gestionar la creación y ejecución de contenedores, pero si utiliza Oracle Linux 7, también puede utilizar Docker para realizar estas tareas.
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:
rhn
: si desea reflejar canales de ULN, debe crear un directorio para almacenar la información de registro de ULN para que sea persistente en los reinicios posteriores del contenedor. Puede asignar este directorio al contenedor cada vez que lo ejecute, para que tenga acceso a los datos de registro de ULN.repo
: se debe crear un directorio para almacenar todos los paquetes y metadatos que refleje desde ULN o el servidor yum. El sistema de archivos que aloja este directorio basado necesita suficiente espacio en disco disponible para atender todos los repositorios y canales que desea reflejar. Puede optar por montar el almacenamiento dedicado en esta ubicación o asignarlo a una ubicación alternativa si es necesario.
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.
config/uln.conf
: este archivo almacena credenciales de acceso de ULN, como credenciales de Oracle SSO y un CSI activo. Los permisos de archivo se deben definir para restringir el acceso. No necesita este archivo si no desea reflejar desde ULN.config/repo-map.json
: este archivo se utiliza para crear URL de repositorio e identificar cómo acceder a diferentes canales de ULN y repositorios de yum. No debe editar este archivo, pero puede hacer referencia a él para ver qué nombres de canal están disponibles para la creación de reflejos. Tenga en cuenta que este archivo puede ser necesario actualizar de vez en cuando para representar nuevos canales ULN. Además, algunas entradas de este archivo sólo están disponibles en ULN, incluidos todos los repositorios que contienen la palabrabase
,patch
,ksplice
,JavaSE
yExadata
. Estos repositorios pueden restringirse aún más a CSI específicos.config/repos.json
: este archivo se utiliza para identificar los canales de ULN o los repositorios de yum que se deben reflejar. Se separa en dos secciones: la primera lista de canales ULN y la segunda lista de repositorios yum. Si solo desea reflejar repositorios de yum, elimine por completo la sección ULN. La sección ULN sólo debe contener canales que no estén disponibles como repositorios en https://yum.oracle.com, ya que es más eficaz reflejar directamente desde el servidor yum. La mayoría de los canales también están disponibles en el servidor yum de Oracle Linux, por lo que utilice esta sección para mostrar los canales siempre que sea posible. Si agrega entradas a la sección ULN, debe tener una cuenta ULN y debe registrar la imagen de contenedor con ULN.
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
deconfig/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.
-
(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.
-
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. -
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 paquetesOracle 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
yconfig
del directorio de trabajo actual se asignan al contenedor. Solo tiene que realizar el registro una vez para el contenedor mientras el directoriorhn
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.
Use a Container to Create a DNF or ULN Repo Mirror
F54938-01
March 2022
Copyright © 2022, Oracle and/or its affiliates.