Hinweis:

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:

Voraussetzungen

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:

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.

Hinweis: Zur Synchronisierung von ULN ist ein Oracle Linux-Supportabonnement erforderlich. Wenn Sie kein Supportabonnement haben, entfernen Sie das uln-Array vollständig aus config/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.

  1. (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.

  2. 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.

  3. repos.json kopieren

    cp 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 die Oracle 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 und config im aktuellen Arbeitsverzeichnis werden dem Container zugeordnet. Sie müssen sich nur einmal für den Container registrieren, solange das Verzeichnis rhn 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.