Nota:
- Questa esercitazione è disponibile in un ambiente di laboratorio gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del tuo ambiente cloud.
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:
- Installa strumenti contenitore
- Creare un contenitore con il software richiesto
- Creare un servizio mirror utilizzando repository all'interno del contenitore
Prerequisiti
- Un sistema con Oracle Linux 7 o Oracle Linux 8 installato e con accesso a Internet.
- Questa esercitazione si basa sul presupposto che si stia utilizzando Oracle Linux 8, pertanto i comandi di installazione del pacchetto utilizzano dnf, se si utilizza Oracle Linux 7, sostituire queste istruzioni di comando con yum.
- In questa esercitazione, utilizziamo Podman e Buildah per gestire la creazione e l'esecuzione dei container, ma se si utilizza Oracle Linux 7, è anche possibile utilizzare Docker per eseguire questi task.
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:
rhn
: se si intende eseguire il mirroring dei canali ULN, è necessario creare una directory in cui memorizzare le informazioni di registrazione ULN per renderle persistenti nei successivi riavvii del contenitore. È possibile mappare questa directory nel contenitore ogni volta che la si esegue, in modo da avere accesso ai dati di registrazione ULN.repo
: è necessario creare una directory per memorizzare tutti i pacchetti e i metadati di cui si esegue il mirroring da ULN o dal server yum. Il file system che ospita questa directory base richiede spazio su disco sufficiente per gestire tutti i repository e i canali che si desidera eseguire il mirroring. È possibile scegliere di attivare la memorizzazione dedicata in questa posizione o di mapparla a una posizione alternativa, se necessario.
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.
config/uln.conf
: in questo file vengono memorizzate le credenziali di accesso ULN, ad esempio le credenziali Oracle SSO e un CSI attivo. Per limitare l'accesso, è necessario impostare le autorizzazioni del file. Questo file non è necessario se non si intende eseguire il mirroring da ULN.config/repo-map.json
: questo file viene utilizzato per creare URL di repository e per identificare come accedere a canali ULN e repository yum diversi. Non modificare questo file, ma è possibile farvi riferimento per vedere quali nomi di canale sono disponibili per il mirroring. È possibile che questo file debba essere aggiornato di tanto in tanto per tenere conto dei nuovi canali ULN. Inoltre, alcune voci in questo file sono disponibili solo in ULN, inclusi tutti i repository che contengono la parolabase
,patch
,ksplice
,JavaSE
eExadata
. Tali repository possono essere ulteriormente limitati a CSI specifici.config/repos.json
: questo file viene utilizzato per identificare i canali ULN o i repository yum in mirroring. È separato in due sezioni: la prima elencazione dei canali ULN e la seconda lista dei repository yum. Se si intende eseguire il mirroring dei repository yum, rimuovere completamente la sezione ULN. La sezione ULN deve contenere solo canali non disponibili come repository in https://yum.oracle.com in quanto è più efficiente eseguire il mirror direttamente dal server yum. La maggior parte dei canali è disponibile anche sul server yum di Oracle Linux. Utilizzare questa sezione per elencare i canali, se possibile. Se si aggiungono voci alla sezione ULN, è necessario disporre di un account ULN e registrare l'immagine del contenitore con ULN.
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 fileconfig/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.
-
(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.
-
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. -
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 pacchettiOracle 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
econfig
nella directory di lavoro corrente vengono mappate nel contenitore. È necessario eseguire la registrazione una sola volta per il contenitore, purché la directoryrhn
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.
Use a Container to Create a DNF or ULN Repo Mirror
F54945-01
March 2022
Copyright © 2022, Oracle and/or its affiliates.