Remarque :
- Ce tutoriel est disponible dans un environnement de laboratoire gratuit fourni par Oracle.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par celles propres à votre environnement cloud.
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 :
- Installer container-tools
- Créer un conteneur avec le logiciel requis
- Créer un service miroir à l'aide de référync dans le conteneur
Prérequis
- Système sur lequel Oracle Linux 7 ou Oracle Linux 8 est installé et avec accès à Internet.
- Ce tutoriel suppose que vous utilisez Oracle Linux 8, donc les commandes d'installation de package utilisent dnf, si vous utilisez Oracle Linux 7, remplacez ces instructions de commande par yum.
- Dans ce tutoriel, nous utilisons Podman et Buildah pour gérer la création et l'exécution de conteneurs, mais si vous utilisez Oracle Linux 7, vous pouvez également utiliser Docker pour effectuer ces tâches.
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 :
rhn
: si vous prévoyez de mettre en miroir les canaux ULN, vous devez créer un répertoire pour stocker les informations d'enregistrement ULN afin de les rendre persistantes lors des redémarrages de conteneur suivants. Vous pouvez mapper ce répertoire dans votre conteneur chaque fois que vous l'exécutez, de sorte qu'il ait accès aux données d'enregistrement ULN.repo
: un répertoire doit être créé pour stocker tous les packages et métadonnées que vous mettez en miroir à partir d'ULN ou du serveur yum. Le système de fichiers hébergeant ce répertoire basé nécessite suffisamment d'espace disque disponible pour accueillir tous les référentiels et canaux que vous souhaitez mettre en miroir. Vous pouvez choisir de monter le stockage dédié à cet emplacement ou de le mapper à un autre emplacement si nécessaire.
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.
config/uln.conf
: ce fichier stocke les informations d'identification d'accès ULN, telles que les informations d'identification Oracle SSO et un numéro CSI actif. Les autorisations de fichier doivent être définies pour restreindre l'accès. Vous n'avez pas besoin de ce fichier si vous n'avez pas l'intention de mettre en miroir à partir de ULN.config/repo-map.json
: ce fichier permet de construire des URL de référentiel et d'identifier comment accéder à différents canaux ULN et référentiels yum. Vous ne devez pas modifier ce fichier, mais vous pouvez vous y référer pour voir les noms de canal disponibles pour la mise en miroir. Notez que ce fichier peut avoir besoin d'être mis à jour de temps en temps pour prendre en compte de nouveaux canaux ULN. En outre, certaines entrées de ce fichier ne sont disponibles que dans ULN, y compris tous les référentiels contenant les motsbase
,patch
,ksplice
,JavaSE
etExadata
. Ces référentiels peuvent être limités à des CSI spécifiques.config/repos.json
: ce fichier permet d'identifier les canaux ULN ou les référentiels yum qui doivent être mis en miroir. Elle est séparée en deux sections : la première liste des canaux ULN et la seconde liste des référentiels yum. Si vous souhaitez uniquement mettre en miroir les référentiels yum, supprimez entièrement la section ULN. La section ULN ne doit contenir que les canaux qui ne sont pas disponibles en tant que référentiels sur https://yum.oracle.com car il est plus efficace de mettre en miroir directement à partir du serveur yum. La plupart des canaux sont également disponibles sur le serveur Oracle Linux yum. Utilisez donc cette section pour répertorier vos canaux chaque fois que cela est possible. Si vous ajoutez des entrées à la section ULN, vous devez avoir un compte ULN et vous devez enregistrer l'image du conteneur avec ULN.
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
deconfig/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.
-
(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.
-
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. -
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 packagesOracle 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
etconfig
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épertoirerhn
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.
Use a Container to Create a DNF or ULN Repo Mirror
F54940-01
March 2022
Copyright © 2022, Oracle and/or its affiliates.