Nota:

Utilizzare un contenitore per creare un mirror di repository DNF o ULN

Dichiarazione di non responsabilità del supporto Oracle

Oracle non fornisce supporto tecnico per la sequenza di passaggi che vengono forniti nelle istruzioni riportate di seguito perché questi passi si riferiscono e non sono forniti da Oracle. Questa esercitazione contiene solo istruzioni opzionali.

Il metodo supportato da Oracle per creare mirror di distribuzione del software Oracle Linux consiste nell'utilizzare il comando dnf reposync su un sistema su cui è in esecuzione Oracle Linux. Per ulteriori informazioni, vedere https://docs.oracle.com/en/operating-systems/oracle-linux/software-management/sfw-mgmt-UseSoftwareDistributionMirrors.html#use-mirrors.

Introduzione

Oracle Linux 8 include uno strumento reposync completamente funzionale per DNF che semplifica la creazione di un mirror di qualsiasi repository yum. Questa funzionalità può essere estesa anche per eseguire il mirroring dei canali ULN per ambienti in cui la maggior parte dei sistemi non dispone dell'accesso diretto a Internet. Creando un mirror yum dei repository yum e dei canali ULN utilizzati dall'organizzazione, è possibile ridurre il carico di lavoro della rete e migliorare le prestazioni yum in tutto l'ambiente. I mirror Yum sono utili anche se si configurano altri servizi per il proprio ambiente, ad esempio Ksplice offline.

Mentre le release precedenti di Oracle Linux includevano un pacchetto uln-yum-mirror che poteva essere utilizzato per eseguire servizi di mirroring, questo non era particolarmente efficiente ed era relativamente complicato da configurare.

Un servizio di mirroring ULN o yum è un esempio tipico di servizio che viene eseguito al meglio all'interno di un set di contenitori. Utilizzando Docker o Podman, è possibile distribuire in modo rapido e semplice un contenitore che utilizza l'immagine oraclelinux:8-slim per gestire la sincronizzazione pianificata dei repository yum o dei canali ULN utilizzati all'interno dell'organizzazione. È inoltre possibile distribuire un contenitore che gestisce il provisioning dei repository in mirroring all'interno di un servizio Web a cui i sistemi client possono accedere.

Un progetto GitHub opensource fornisce i Dockerfile, gli script e le istruzioni per configurare questo tipo di servizio all'indirizzo https://github.com/Djelibeybi/oraclelinux-reposync.

Obiettivi

In questo laboratorio imparerai a:

Prerequisiti

Installazione dei package richiesti

Se non è già connesso, aprire un terminale e connettersi tramite ssh al sistema ol8-server:

ssh oracle@<ip_address_of_ol8-server>

Installare il Git in modo che sia possibile duplicare il repository container-reposync:

sudo dnf install -y git

Installare il podman e le utility correlate:

sudo dnf module install -y container-tools:ol8

Nota: se si utilizza Oracle Linux 7, i pacchetti buildah e skopeo sono disponibili solo tramite repository EPEL non supportati. Per questo motivo, puoi scegliere di utilizzare Docker al fine di creare e eseguire le immagini dei tuoi container. Ulteriori dettagli sull'uso di Docker sono reperibili nel progetto opensource README.md.

Duplica il repository container-reposync

Duplica il repository:

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

Creare le immagini

Creare le due immagini contenitore incluse nel repository:

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

Verificare la build:

podman images

Creare directory di storage aggiuntive

Per garantire il corretto funzionamento del servizio container-reposync è necessario creare due directory aggiuntive:

Queste directory possono essere posizionate ovunque si desideri, ma si consiglia di crearle insieme alle informazioni di configurazione per questo contenitore. Ad esempio:

mkdir rhn repo

Imposta le variabili di configurazione per il repository

L'immagine ol-repo-sync dipende dalle informazioni di configurazione memorizzate in diversi file di configurazione memorizzati nella directory di configurazione.

Nota: per eseguire la sincronizzazione da ULN è necessaria una sottoscrizione al supporto di Oracle Linux. Se non si dispone di una sottoscrizione al supporto, rimuovere completamente l'array uln dal file config/repos.json.

Per ottimizzare le prestazioni di sincronizzazione, utilizzare l'origine yum invece di ulnare, laddove possibile, come utilizza yum.oracle.com il CDN Akamai e avrà quasi sempre velocità di download molto più elevate rispetto a ULN.

  1. (Facoltativo) Se si dispone di una sottoscrizione al supporto Oracle Linux attiva:

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

    Sostituire i segnaposto con le credenziali Oracle SSO e un CSI attivo. Per proteggere il contenuto di questo file, eseguire le operazioni riportate di seguito.

    chmod 400 config/uln.conf
    

    Ciò impedisce l'accesso a chiunque tranne se si è proprietari.

  2. Creare un file config/repo-map.json eseguendo il comando seguente:

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

    Questo comando può essere eseguito di nuovo in qualsiasi momento se si desidera aggiornare il file config/repo-map.json con l'ultima configurazione di repo. Il comando deve essere eseguito almeno ogni volta che viene rilasciato un nuovo aggiornamento o una versione principale in modo che i nuovi repository siano disponibili per la sincronizzazione.

  3. Copia repos.json

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

    Aggiungere tutti i repository che si desidera sincronizzare nell'array uln o yum.

    Esempio:

    Di seguito è riportato uno script che sincronizza i pacchetti Oracle Linux 8 Ksplice aware userspace di ULN e i pacchetti Oracle Linux Automation Manager di yum.oracle.com. Se durante questo laboratorio non si dispone di un account ULN, rimuovere l'intero blocco uln.

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

(Facoltativo) Registrare il container con ULN

Se non si intende eseguire il mirroring di canali da ULN, non è necessario registrare il container. Se sono state immesse le credenziali ULN nel file di configurazione ULN e è stata creata una directory per contenere i dati di registrazione ULN e nel file di configurazione del repository è stato configurato almeno un canale ULN, è necessario registrare il contenitore.

La registrazione può essere eseguita con:

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:* questa operazione richiederà alcuni minuti senza output sul terminale, ma al termine dovrebbe tornare al prompt dei comandi. Le directory rhn e config nella directory di lavoro corrente vengono mappate nel contenitore. È necessario eseguire la registrazione una sola volta per il contenitore, purché la directory rhn sia mappata a /etc/sysconfig/rhn per ogni contenitore successivo eseguito.

Popola il repository di mirror

Per popolare il repository di mirror con i pacchetti provenienti dai repository e dai canali configurati, eseguire le operazioni riportate di seguito.

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

Il contenitore aggiunge e sottoscrive automaticamente ogni canale configurato in config/repos.json e crea una gerarchia identica a quella utilizzata dal server yum di Oracle Linux.

Questo comando può essere pianificato per essere eseguito su una pianificazione ricorrente utilizzando un cronjob o un timer sistemato.

Nota: il completamento di questo passo richiede alcuni minuti poiché tutti i pacchetti vengono scaricati sul sistema locale.

Servire il mirror yum locale ai sistemi client

Utilizzare l'immagine del contenitore ol-repo-web per servire i repository yum ai sistemi client. Il contenitore può essere eseguito in modo permanente e può essere configurato per l'avvio al boot:

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

Nota: la directory dei repository viene mappata nel contenitore del server yum con autorizzazioni di sola lettura per consentire al contenitore di continuare a essere eseguito e servire i client mentre i repository e i canali in mirroring vengono aggiornati.

Verificare il mirror yum locale

Creare una nuova voce di repository dnf con il seguente contenuto:

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: se si espone a sistemi esterni, modificare baseurl in alto sull'indirizzo IP o sul nome host del sistema su cui è in esecuzione il contenitore.
Aprire inoltre il firewall per consentire l'accesso alla porta 8080.

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

Quindi confermare che la nuova voce funziona:

dnf repolist
dnf info ansible

Per ulteriori informazioni

Vedere altre risorse correlate.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di apprendimento gratuito sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare il sito Oracle Help Center.