Remarque :

Utiliser un conteneur pour créer un miroir de référentiel DNF ou ULN

Avis de non-responsabilité du support Oracle

Oracle ne fournit pas de support technique pour la séquence d'étapes fournies dans les instructions suivantes car ces étapes font référence à un projet openource non fourni par Oracle. Ce tutoriel fournit des instructions facultatives uniquement pour plus de commodité.

La méthode de création de miroirs de distribution du logiciel Oracle Linux prise en charge par Oracle consiste à utiliser la commande dnf reposync sur un système exécutant Oracle Linux. Pour plus d'informations, reportez-vous à https://docs.oracle.com/en/operating-systems/oracle-linux/software-management/sfw-mgmt-UseSoftwareDistributionMirrors.html#use-mirrors.

Introduction

Oracle Linux 8 inclut un outil reposync entièrement fonctionnel pour DNF, qui facilite la création d'un miroir de n'importe quel référentiel yum. Cette fonction peut être étendue pour mettre également en miroir les canaux ULN pour les environnements où la majorité de vos systèmes n'ont pas d'accès direct à Internet. En créant un miroir yum des référentiels yum et des canaux ULN utilisés par votre organisation, vous pouvez réduire la surcharge réseau et améliorer les performances yum dans votre environnement. Les miroirs Yum sont également utiles si vous configurez d'autres services pour votre environnement, tels que Ksplice hors ligne.

Bien que les versions précédentes d'Oracle Linux comprenaient un package uln-yum-mirror pouvant être utilisé pour effectuer des services de mise en miroir, cela n'était pas particulièrement efficace et était relativement compliqué à configurer.

Un service de mise en miroir ULN ou yum est un exemple typique d'un service mieux exécuté dans un ensemble de conteneurs. En utilisant Docker ou Podman, vous pouvez déployer rapidement et facilement un conteneur qui utilise l'image oraclelinux:8-slim pour gérer la synchronisation programmée des référentiels yum ou des canaux ULN que vous utilisez au sein de votre organisation. Vous pouvez également déployer un conteneur qui gère le provisionnement des référentiels mis en miroir au sein d'un service Web auquel les systèmes client peuvent accéder.

Un projet openource GitHub fournit les fichiers Dockerfiles, les scripts et les instructions pour configurer ce type de service sur https://github.com/Djelibeybi/oraclelinux-reposync.

Objectifs

Dans cet exercice, vous allez :

Prérequis

Installer les packages obligatoires

Si ce n'est pas déjà fait, ouvrez un terminal et connectez-vous via ssh au système ol8-server :

ssh oracle@<ip_address_of_ol8-server>

Installez git pour cloner le référentiel container-reposync :

sudo dnf install -y git

Installez podman et les utilitaires connexes :

sudo dnf module install -y container-tools:ol8

Remarque : si vous utilisez Oracle Linux 7, les packages buildah et skopeo sont uniquement disponibles via les référentiels EPEL non pris en charge. C'est pourquoi vous pouvez choisir d'utiliser Docker pour créer et exécuter des images de conteneur. Pour plus de détails sur l'utilisation de Docker, consultez le projet openource README.md.

Cloner le référentiel container-reposync

Clonez le référentiel :

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

Création des images

Créez les deux images de conteneur incluses dans le référentiel :

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

Vérifiez le build :

podman images

Créer des répertoires de stockage supplémentaires

Deux répertoires supplémentaires doivent être créés pour que le service container-reposync fonctionne correctement :

Ces répertoires peuvent être situés où vous le souhaitez, mais il est conseillé de les créer en parallèle des informations de configuration de ce conteneur. Par exemple :

mkdir rhn repo

Définir les variables de configuration pour les référentiels

L'image ol-repo-sync dépend des informations de configuration stockées dans divers fichiers de configuration stockés dans le répertoire config.

Remarque : un abonnement au support Oracle Linux est requis pour la synchronisation à partir d'ULN. Si vous ne disposez pas d'un abonnement de support, enlevez complètement le tableau uln de config/repos.json.

Pour des performances de synchronisation optimales, utilisez la source yum au lieu d'uln dans la mesure du possible, car yum.oracle.com tire parti du CDN Akamai et aura presque toujours des vitesses de téléchargement beaucoup plus élevées que ULN.

  1. (Facultatif) Si vous abonnez un abonnement de support Oracle Linux actif :

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

    Remplacez les espaces réservés par les informations d'identification Oracle SSO et un numéro CSI actif. Pour protéger le contenu de ce fichier, exécutez la commande suivante :

    chmod 400 config/uln.conf
    

    Cela empêche toute personne, sauf vous-même, d'accéder.

  2. Créez un fichier config/repo-map.json en exécutant la commande suivante :

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

    Cette commande peut être exécutée à tout moment si vous souhaitez mettre à jour le fichier config/repo-map.json avec la dernière configuration de référentiel. La commande doit au moins être exécutée à chaque fois qu'une nouvelle mise à jour ou une version majeure est lancée afin que les nouveaux référentiels soient disponibles pour la synchronisation.

  3. Copier repos.json

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

    Ajoutez tous les référentiels à synchroniser avec la baie uln ou yum.

    Exemple :

    Voici un script qui synchronise les packages Oracle Linux 8 Ksplice aware userspace à partir d'ULN et les packages Oracle Linux Automation Manager à partir de yum.oracle.com. Si vous n'avez pas de compte ULN au cours de cet exercice, supprimez l'intégralité du bloc uln.

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

(Facultatif) Enregistrez votre conteneur avec ULN

Si vous n'avez pas l'intention de mettre en miroir des canaux depuis ULN, vous n'avez pas besoin d'enregistrer votre conteneur. Si vous avez entré vos informations d'identification ULN dans le fichier de configuration ULN et que vous avez créé un répertoire contenant vos données d'enregistrement ULN et que vous avez configuré au moins un canal ULN dans le fichier de configuration de référentiel, vous devez enregistrer le conteneur.

L'enregistrement peut être effectué en exécutant :

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

Remarque :* Cette opération prend quelques minutes sans sortie vers le terminal, mais elle doit revenir à l'invite de commande une fois l'opération terminée. Les répertoires rhn et config du répertoire de travail en cours sont mis en correspondance dans le conteneur. Vous ne devez effectuer l'enregistrement qu'une seule fois pour le conteneur, tant que le répertoire rhn est mis en correspondance avec /etc/sysconfig/rhn pour chaque conteneur suivant que vous exécutez.

Alimenter votre référentiel miroir

Pour remplir le référentiel miroir avec les packages des référentiels et canaux configurés, exécutez la commande suivante :

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

Le conteneur ajoute et abonne automatiquement chaque canal configuré dans config/repos.json et crée une hiérarchie identique à celle utilisée par le serveur yum Oracle Linux.

Vous pouvez programmer l'exécution de cette commande sur une programmation récurrente à l'aide d'une fonction cronjob ou d'une horloge systemd.

Remarque : Cette étape prend du temps car tous les packages sont téléchargés en local sur votre système.

Utilisation du miroir yum local pour les systèmes client

Utilisez l'image de conteneur ol-repo-web pour servir les référentiels yum à vos systèmes client. Ce conteneur peut s'exécuter de manière permanente et peut être configuré pour démarrer à l'initialisation :

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

Remarque : le répertoire de référentiel est mis en correspondance dans le conteneur de serveur yum avec des droits d'accès en lecture seule pour permettre au conteneur de continuer à exécuter et de servir les clients pendant la mise à jour des référentiels et canaux mis en miroir.

Vérification du miroir yum local

Créez une entrée de référentiel dnf avec le contenu suivant :

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

Remarque : en cas d'exposition à des systèmes externes, remplacez baseurl ci-dessus par l'adresse IP ou le nom d'hôte du système exécutant le conteneur.
Ouvrez également le pare-feu pour autoriser l'accès au port 8080.

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

Vérifiez ensuite que la nouvelle entrée fonctionne :

dnf repolist
dnf info ansible

Pour plus d'informations

Voir les autres ressources connexes :

Ressources de formation supplémentaires

Explorez d'autres exercices sur docs.oracle.com/learn ou accédez à davantage de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir Oracle Learning Explorer.

Pour consulter la documentation du produit, consultez le centre d'aide Oracle.