Ci sono molte ragioni per cui potresti volere un repository Red Hat Enterprise Linux locale. La larghezza di banda è un fattore importante poiché il download di aggiornamenti da Internet può richiedere tempo e larghezza di banda. Un altro motivo potrebbe essere che i tuoi server non sono connessi a Internet e quindi devono ottenere i loro aggiornamenti da una fonte locale. Potresti avere un ambiente di sviluppo per il quale preferiresti non spendere soldi per le licenze ma che devi comunque aggiornare. Qualunque sia la tua ragione, questo tutorial ti guiderà attraverso il processo di configurazione del tuo repository locale.
Nota:il server che funge da repository dovrebbe fungere solo da repository.
Installa i pacchetti necessari per i repository
yum install yum-utils createrepo httpd
Crea le directory per i tuoi repository
mkdir /var/www/html/rhel6
mkdir /var/www/html/rhel6/server
mkdir /var/www/html/rhel6/dts
mkdir /var/www/html/rhel6/dts2
mkdir /var/www/html/rhel6/rhsc
Comandi utili
Elenca i repository sul tuo server sia abilitati che disabilitati.
yum repolist all
Elenca i repo disponibili nel tuo abbonamento
subscription-manager repos --list
Abilita un repository sul tuo sistema
subscription-manager repos --enable=rhel-6-server-optional-rpms
Disabilita un repository sul tuo sistema
subscription-manager repos --disble=rhel-6-server-optional-rpms
Vogliamo che i repository server, dts e rhsc (raccolte di software) siano abilitati nel repository
Sincronizza repository
Una volta che tutti questi repository sono stati abilitati, esegui il comando seguente per tutti loro modificando il download_path per ciascuno in modo che corrisponda al download_path per quel repository.
reposync --gpgcheck -l --repoid=repoid --download_path=/var/www/html/rhel6/repo_name --downloadcomps --download-metadata
Nota:il repository del server impiegherà più tempo. Come tutta la notte. Gli altri dovrebbero essere molto più brevi.
Comando Createrepo
Una volta che i pacchetti sono stati scaricati, tutto ciò che serve è il comando createrepo qui sotto per ogni repository
createrepo -v /var/www/html/rhel6/repo_name/ -g comps.xml
Nota:il -g comps.xml è necessario solo per il repository del server.
Configurazione dei server client
Ora hai un repository locale ma devi apportare alcune modifiche ai tuoi server Red Hat che utilizzeranno questi repository per gli aggiornamenti.
Innanzitutto assicurati che tutti gli altri repository abbiano il flag abilitato impostato su 0 (zero) all'interno del file repository in /etc/yum.repos.d. Non eliminerei i repository per ora perché potresti averne bisogno in seguito. Basta cambiare semplicemente il flag abilitato.
Ora devi creare un file .repo che verrà aggiunto alla directory /etc/yum.repos.d su ogni server che utilizza i repository. Quel file dovrebbe essere simile al seguente.
vi /etc/yum.repos.d/name_of_repo_file.repo
[server] name = rhel-6-server-rpms baseurl = http://hostname_or_ip_address_of_repository/rhel6/server gpgcheck = 0 enabled = 1 [dts] name = rhel-server-dts-6-rpms baseurl = http://hostname_or_ip_address_of_repository/rhel6/dts gpgcheck = 0 enabled = 1 [dts2] name = rhel-server-dts2-6-rpms baseurl = http://hostname_or_ip_address_of_repository/rhel6/dts2 gpgcheck = 0 enabled = 1 [rhsc] name = rhel-server-dts2-6-rpms baseurl = http://hostname_or_ip_address_of_repository/rhel6/dts2 gpgcheck = 0 enabled = 1
Crea Script e Cron Job per aggiornare i tuoi repository
Crea uno script chiamato update-repository.sh e inseriscilo in /usr/local/bin con i seguenti contenuti:
vi /usr/local/bin/update-repository.sh
echo Update script started at $(date) >> /var/log/update-repository.log reposync --gpgcheck -l --repoid=rhel-6-server-rpms --download_path=/var/www/html/rhel6/server --downloadcomps --download-metadata createrepo --update /var/www/html/rhel6/server/ reposync --gpgcheck -l --repoid=rhel-server-dts-6-rpms --download_path=/var/www/html/rhel6/dts --downloadcomps --download-metadata createrepo --update /var/www/html/rhel6/dts/ \\ reposync --gpgcheck -l --repoid=rhel-server-dts2-6-rpms --download_path=/var/www/html/rhel6/dts2 --downloadcomps --download-metadata createrepo --update /var/www/html/rhel6/dts2/ echo Update script ended at $(date) >> /var/log/update-repository.log
chmod 600 /usr/local/bin/update-repository.sh
Nota che l'ho inserito in un registro che ho impostato per ruotare mensilmente.
Crea un file in /etc/cron.d e denominalo update-repository con il seguente contenuto.
vi /etc/cron.d/update-repository
@weekly root /usr/local/bin/update-repository.sh
Pensieri finali
Esistono molti modi diversi per realizzare la creazione di un repository locale e di certo non ho inventato la ruota su questo. Consulta le mie fonti di seguito per ulteriori informazioni e approfondimenti per la tua configurazione.
Fonti
- https://access.redhat.com/solutions/23016
- http://www.oracle.com/technetwork/articles/servers-storage-admin/yum-repo-setup-1659167.html
- https://www.howtoforge.com/creating_a_local_yum_repository_centos