Hinweis:
- Dieses Tutorial steht in einer von Oracle bereitgestellten kostenlosen Übungsumgebung zur Verfügung.
- Er verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, Mandanten und Compartments. Ersetzen Sie diese Werte beim Durchführen Ihrer Übung durch spezifische Werte für Ihre Cloud-Umgebung.
Mit einem Container eine DNF- oder ULN Repo-Spiegelung erstellen
Oracle Support - Haftungsausschluss
Oracle bietet keinen technischen Support für die Schritte, die in den folgenden Anweisungen bereitgestellt werden, da diese Schritte auf das und das OpenSource-Projekt verweisen, das nicht von Oracle bereitgestellt wird. Dieses Tutorial enthält optionale Anweisungen nur als Benutzerfreundlichkeit.
Die von Oracle unterstützte Methode zum Erstellen von Oracle Linux-Softwareverteilungsspiegel besteht darin, den Befehl dnf reposync
auf einem System zu verwenden, auf dem Oracle Linux ausgeführt wird. Weitere Informationen finden Sie unter https://docs.oracle.com/en/operating-systems/oracle-linux/software-management/sfw-mgmt-UseSoftwareDistributionMirrors.html#use-mirrors.
Einführung
Oracle Linux 8 beinhaltet ein voll funktionsfähiges reposync-Tool für DNF, mit dem Sie einen Mirror eines beliebigen yum-Repositorys erstellen können. Diese Funktion kann erweitert werden, um auch ULN-Kanäle für Umgebungen zu spiegeln, in denen die meisten Ihrer Systeme keinen direkten Zugriff auf das Internet haben. Indem Sie einen yum-Spiegel der yum-Repositorys und ULN-Kanäle erstellen, die Ihr Unternehmen verwendet, können Sie den Netzwerk-Overhead reduzieren und die yum-Performance in Ihrer Umgebung verbessern. Yum-Spiegel sind auch nützlich, wenn Sie andere Services für Ihre Umgebung wie Offline-Ksplice konfigurieren.
Während frühere Versionen von Oracle Linux ein uln-yum-mirror
-Package enthielten, das zur Ausführung von Mirroring-Services verwendet werden konnte, war dies nicht besonders effizient und war relativ kompliziert einzurichten.
Ein ULN- oder yum-Spiegelservice ist ein typisches Beispiel für einen Service, der am besten in einer Gruppe von Containern ausgeführt werden kann. Mit Docker oder Podman können Sie schnell und einfach einen Container bereitstellen, der das oraclelinux:8-slim
-Image verwendet, um die geplante Synchronisierung der yum-Repositorys oder der ULN-Kanäle zu verarbeiten, die Sie in Ihrer Organisation verwenden. Sie können auch einen Container bereitstellen, der das Provisioning der gespiegelten Repositorys innerhalb eines Webservice verarbeitet, auf den Clientsysteme zugreifen können.
Ein Open-Source-GitHub-Projekt stellt die Dockerfiles, Skripte und Anweisungen zur Einrichtung eines solchen Service unter https://github.com/Djelibeybi/oraclelinux-reposync bereit.
Ziele
In dieser Übung lernen Sie Folgendes:
- Container-Tools installieren
- Container mit der erforderlichen Software erstellen
- Mirror-Service mit Repositorys innerhalb des Containers erstellen
Voraussetzungen
- Ein System mit installiertem Oracle Linux 7 oder Oracle Linux 8 und Internetzugang.
- In diesem Tutorial wird davon ausgegangen, dass Sie Oracle Linux 8 verwenden, daher verwenden die Packageinstallationsbefehle dnf. Wenn Sie Oracle Linux 7 verwenden, ersetzen Sie diese Befehlsanweisungen durch yum.
- In diesem Tutorial verwenden wir Podman und Buildah für das Erstellen und Ausführen von Containern. Wenn Sie Oracle Linux 7 jedoch verwenden, können Sie diese Aufgaben auch mit Docker ausführen.
Erforderliche Packages installieren
Falls noch keine Verbindung besteht, öffnen Sie ein Terminal, und stellen Sie über ssh eine Verbindung zum ol8-server-System her:
ssh oracle@<ip_address_of_ol8-server>
Installieren Sie git, damit Sie das Container-Repository-Repository klonen können:
sudo dnf install -y git
Installieren Sie podman und zugehörige Utilitys:
sudo dnf module install -y container-tools:ol8
Hinweis: Wenn Sie Oracle Linux 7 verwenden, sind die Buildah- und Skopeo-Packages nur über die nicht unterstützten EPEL-Repositorys verfügbar. Aus diesem Grund können Sie Docker zum Erstellen und Ausführen Ihrer Containerimages verwenden. Weitere Informationen zur Verwendung von Docker finden Sie im Open-Source-Projekt README.md.
Container-Reposync-Repository klonen
Repository klonen:
git clone https://github.com/Djelibeybi/oraclelinux-reposync.git
cd oraclelinux-reposync
Bilder erstellen
Erstellen Sie die beiden Container-Images im Repository:
buildah build-using-dockerfile -t ol-repo-sync .
buildah build-using-dockerfile -t ol-repo-web -f Dockerfile.nginx .
Prüfen Sie den Build:
podman images
Zusätzliche Speicherverzeichnisse erstellen
Damit der Container-Repository-Service ordnungsgemäß funktioniert, müssen zwei zusätzliche Verzeichnisse erstellt werden:
rhn
: Wenn Sie ULN-Kanäle spiegeln möchten, müssen Sie ein Verzeichnis erstellen, in dem die ULN-Registrierungsinformationen gespeichert werden, damit sie über nachfolgende Containerneustarts hinweg persistent sind. Sie können dieses Verzeichnis bei jeder Ausführung in Ihrem Container zuordnen, sodass es Zugriff auf ULN-Registrierungsdaten hat.repo
: Ein Verzeichnis muss erstellt werden, um alle Packages und Metadaten zu speichern, die Sie von ULN oder dem yum-Server gespiegelt haben. Das Dateisystem, das dieses Verzeichnis hostet, benötigt ausreichend verfügbaren Speicherplatz, um alle Repositorys und Kanäle zu berücksichtigen, die Sie spiegeln möchten. Sie können dedizierten Speicher für diesen Speicherort mounten oder gegebenenfalls einem alternativen Speicherort zuordnen.
Diese Verzeichnisse können an beliebiger Stelle gespeichert werden. Es wird jedoch empfohlen, sie neben den Konfigurationsinformationen für diesen Container zu erstellen. Beispiel:
mkdir rhn repo
Konfigurationsvariablen für Repository festlegen
Das ol-repo-sync-Abbild hängt von den Konfigurationsinformationen ab, die in verschiedenen Konfigurationsdateien gespeichert sind, die im Konfigurationsverzeichnis gespeichert sind.
config/uln.conf
: Diese Datei speichert ULN-Zugangsdaten, wie Oracle SSO-Zugangsdaten und eine aktive CSI. Die Dateiberechtigungen müssen festgelegt werden, um den Zugriff einzuschränken. Sie benötigen diese Datei nicht, wenn Sie keine Spiegelung von ULN vorhaben.config/repo-map.json
: Diese Datei wird zum Erstellen von Repository-URLs und zum Identifizieren des Zugriffs auf verschiedene ULN-Kanäle und yum-Repositorys verwendet. Sie sollten diese Datei nicht bearbeiten, aber Sie können sie referenzieren, um festzustellen, welche Kanalnamen für die Spiegelung verfügbar sind. Beachten Sie, dass diese Datei möglicherweise von Zeit zu Zeit aktualisiert werden muss, um neue ULN-Kanäle zu berücksichtigen. Außerdem sind einige Einträge in dieser Datei nur in ULN verfügbar, einschließlich aller Repositorys, die das Wortbase
,patch
,ksplice
,JavaSE
undExadata
enthalten. Diese Repositorys können weiter auf bestimmte CSI beschränkt werden.config/repos.json
: Mit dieser Datei wird angegeben, welche ULN-Kanäle oder yum-Repositorys gespiegelt werden sollen. Sie ist in zwei Abschnitte unterteilt: die erste Auflistung der ULN-Kanäle und die zweite Auflistung der yum-Repositorys. Wenn Sie nur yum-Repositorys spiegeln möchten, entfernen Sie den ULN-Abschnitt vollständig. Der ULN-Abschnitt darf nur Kanäle enthalten, die nicht als Repositorys auf https://yum.oracle.com verfügbar sind, da der Spiegelungsvorgang direkt vom yum-Server effizienter ist. Die meisten Kanäle sind auch auf dem Oracle Linux yum-Server verfügbar. Verwenden Sie diesen Abschnitt also, um Ihre Kanäle nach Möglichkeit aufzulisten. Wenn Sie Einträge zum ULN-Abschnitt hinzufügen, benötigen Sie ein ULN-Konto, und Sie müssen das Container-Abbild bei ULN registrieren.
Hinweis: Zur Synchronisierung von ULN ist ein Oracle Linux-Supportabonnement erforderlich. Wenn Sie kein Supportabonnement haben, entfernen Sie das
uln
-Array vollständig ausconfig/repos.json
.
Für die beste Synchronisierungsleistung verwenden Sie die yum-Quelle anstelle von uln wo immer möglich, da yum.oracle.com das Akamai-CDN nutzt und fast immer viel höhere Downloadgeschwindigkeiten als ULN aufweist.
-
(Optional) Wenn Sie ein aktives Oracle Linux-Supportabonnement haben:
cp config/uln.sample.conf config/uln.conf
Ersetzen Sie die Platzhalter durch Oracle SSO-Zugangsdaten und eine aktive CSI. Um den Inhalt dieser Datei zu schützen, führen Sie Folgendes aus:
chmod 400 config/uln.conf
Dadurch wird verhindert, dass jemand außer sich selbst darauf zugreifen kann.
-
Erstellen Sie eine
config/repo-map.json
-Datei, indem Sie den folgenden Befehl ausführen:podman run --rm -it \ --name ol-repo-sync \ -v ${PWD}/config:/config:z \ -v ${PWD}/repo:/repo:z \ ol-repo-sync update
Dieser Befehl kann jederzeit erneut ausgeführt werden, wenn Sie die Datei
config/repo-map.json
mit der neuesten Repository-Konfiguration aktualisieren möchten. Der Befehl muss mindestens ausgeführt werden, wenn ein neues Update oder eine Hauptversion freigegeben wird, damit die neuen Repositorys synchronisiert werden können. -
repos.json
kopierencp config/repos.sample.json config/repos.json
Fügen Sie alle Repositorys hinzu, die mit dem uln- oder yum-Array synchronisiert werden sollen.
Beispiel:
Hier ist ein Skript, das die
Oracle Linux 8 Ksplice aware userspace
-Packages aus ULN und dieOracle Linux Automation Manager
-Packages aus yum.oracle.com synchronisiert. Wenn Sie während dieser Übung kein ULN-Konto haben, entfernen Sie den gesamten uln-Block.echo '{ "uln": [ "ol8_x86_64_userspace_ksplice", "ol8_aarch64_userspace_ksplice" ], "yum": [ "ol8_x86_64_automation" ] }' | tee config/repos.json
(Optional) Registrieren Sie Ihren Container bei ULN
Wenn Sie keine Kanäle von ULN spiegeln möchten, müssen Sie Ihren Container nicht registrieren. Wenn Sie Ihre ULN-Zugangsdaten in die ULN-Konfigurationsdatei eingegeben haben und ein Verzeichnis für Ihre ULN-Registrierungsdaten erstellt haben und mindestens einen ULN-Kanal in der Repository-Konfigurationsdatei konfiguriert haben, müssen Sie den Container registrieren.
Die Registrierung kann durch Ausführen von:
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
Hinweis:* Dieser Vorgang kann einige Minuten dauern. Es sollte jedoch nach Abschluss der Ausführung wieder zu der Eingabeaufforderung zurückkehren. Die Verzeichnisse
rhn
undconfig
im aktuellen Arbeitsverzeichnis werden dem Container zugeordnet. Sie müssen sich nur einmal für den Container registrieren, solange das Verzeichnisrhn
für jeden nachfolgenden Container, den Sie ausführen,/etc/sysconfig/rhn
zugeordnet ist.
Spiegel-Repository auffüllen
Um das Spiegel-Repository mit Packages aus den konfigurierten Repositorys und Kanälen aufzufüllen, führen Sie Folgendes aus:
podman run --rm -it \
-v ${PWD}/rhn:/etc/sysconfig/rhn \
-v ${PWD}/config:/config \
-v ${PWD}/repo:/repo:z \
ol-repo-sync
Der Container fügt automatisch jeden in config/repos.json
konfigurierten Kanal hinzu und ab und erstellt eine identische Hierarchie wie der vom Oracle Linux yum-Server verwendete.
Dieser Befehl kann für die Ausführung auf einem wiederkehrenden Zeitplan mit einem cronjob oder einem systemd Timer geplant werden.
Hinweis: Dieser Schritt dauert eine Weile, da alle Packages lokal auf Ihr System heruntergeladen werden.
Lokale yum-Spiegelung für Clientsysteme bereitstellen
Verwenden Sie das Containerimage ol-repo-web
, um die yum-Repositorys für Ihre Clientsysteme bereitzustellen. Dieser Container kann dauerhaft ausgeführt und so konfiguriert werden, dass er beim Booten gestartet wird:
podman run --detach --name yum-server \
-p 8080:80 \
-v ${PWD}/repo:/var/www/html/repo:ro \
ol-repo-web
Hinweis: Das Repository-Verzeichnis wird dem yum-Server-Container mit schreibgeschützten Berechtigungen zugeordnet, damit der Container weiterhin Clients ausführen und verarbeiten kann, während die gespiegelten Repositorys und Kanäle aktualisiert werden.
Prüfen des lokalen yum-Spiegels
Erstellen Sie einen neuen DNF-Repository-Eintrag mit dem folgenden Inhalt:
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
Hinweis: Wenn externe Systeme verfügbar sind, ändern Sie
baseurl
oben in die IP-Adresse oder den Hostnamen des Systems, auf dem der Container ausgeführt wird.
Öffnen Sie außerdem die Firewall, um Zugriff auf Port 8080 zuzulassen.sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload
Bestätigen Sie dann, dass der neue Eintrag funktioniert:
dnf repolist
dnf info ansible
Weitere Informationen
Weitere zugehörige Ressourcen anzeigen:
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Use a Container to Create a DNF or ULN Repo Mirror
F54944-01
March 2022
Copyright © 2022, Oracle and/or its affiliates.