Oracle Linux 7 Update Server

Değerli Dostlar,

Bildiğimiz üzere Oracle Linux , Oracle firması tarafından geliştirilen ve repository deposu yine Oracle tarfından güncellenen bir işletim sistemi. Gerek veri tabanı alt katmanında gerekse Exadata alt katmanın yüksek performans ve erişebilirlik sağlayan bu işletim sisteminin bugün kendi serisi için nasıl local repository deposu olarak kullanılacağını anlatacağız.

Oracle Linux 7 işletim sistemi alternatifi olan her işletim sistemi gibi güvenlik ve iyileştirme üzerine güncellemeler alabilmektedir. Bu güncellemeler bağlı olduğu süreme göre internetten yapılabildiği gibi internet trafiğini yormamak ayrıca mevcut güncellemeleri kontrol altına almak için kendi bünyenizdeki bir Oracle Linux 7 yüklü bir sunucudan da yapılabilir. Bugün size bu işlemin nasıl yapılacağını anlatacağız. Sürecimiz Server ve Client olmak üzere iki ayrı fazda yapılacak.

Öncelikle local repository yapacağımız bir Oracle Linux 7 makinasına ayrıca kısaca CSI dediğimiz Customer Support Identifer yani bir Oracle support hesabına ihtiyacımız olacak.

İhtiyaçlarımız hazırsa başlayabiliriz. İlk olarak Server tarafı ile başlıyoruz.

Öncelikle Yum araçlarından createrepo ‘yu yüklüyoruz.

# yum install yum-utils createrepo

Daha sonra Oracle CSI üzerine kayıt oluyoruz.

# uln_register

Oracle Linux 7 işletim sistemini varsayılan bir kurulum ile yapılandırdıysanız ol7_latest ve ol7_UEKR4 repositoryleri ” /etc/yum.repos.d/public-yum-ol7.repo ” kurulu olarak gelmiş olması gerekir. İlgili konumdan kontrolleri yapabilirsiniz.

Aşağıdaki dört komutu sırası ile çalıştırarak internet üzerinden Repository paketlerini kendi sunucumuza senkron ediyoruz. Bu işlem dosya boyutu ve internet hızınıza göre değişiklik gösterecektir.

# yum install yum-plugin-fastestmirror
# /usr/bin/reposync --newest-only --repoid=ol7_latest -p /repo/OracleLinux
# /usr/bin/reposync --newest-only --repoid=ol7_UEKR4 -p /repo/OracleLinux
# /usr/bin/reposync --newest-only --repoid=ol7_UEKR5 -p /repo/OracleLinux

Yükleme işlemi tamamlandıktan sonra yine createrepo komutu ile local alt yapmızı hazırlayabiliriz.

# /usr/bin/createrepo /repo/OracleLinux/ol7_latest/getPackage/
# /usr/bin/createrepo /repo/OracleLinux/ol7_UEKR4/getPackage/
# /usr/bin/createrepo /repo/OracleLinux/ol7_UEKR5/getPackage/

Local repository dosyamız hazırlandıktan sonra bunları bir web server aracılığı ile erişime açacağız. Client tarafı bir xml dosyasından güncellemeleri okuyacak. Web sunucumuzu kurup aktif ediyoruz.

# yum install httpd -y
# systemctl start httpd
# systemctl enable httpd

Firewall ayarlarımızı yapıyoruz ve 80 portunu erişime açıyoruz.

# firewall-cmd --permanent --zone=public --add-port=80/tcp
# firewall-cmd --reload

Eğer SeLinux kullanıyorsak ilgili yapılandırmayı ekliyoruz.

# # One-off configuration.
# yum install policycoreutils-python -y
# semanage fcontext -a -t httpd_sys_content_t "/repo/OracleLinux(/.*)?"

# # Run each time the repo contents change.
# restorecon -F -R -v /repo/OracleLinux

İlk adımda repository depomuzu oluşturmuştuk. Web sunucu ile bunlara erişeceğiz. Sembolik link ile web sunucumuzdan ilgili dizinlere atama yapıyoruz.

# mkdir -p /var/www/html/repo/OracleLinux/ol7_latest
# ln -s /repo/OracleLinux/ol7_latest/getPackage/ /var/www/html/repo/OracleLinux/ol7_latest/x86_64

# mkdir -p /var/www/html/repo/OracleLinux/ol7_UEKR4
# ln -s /repo/OracleLinux/ol7_UEKR4/getPackage/ /var/www/html/repo/OracleLinux/ol7_UEKR4/x86_64

# mkdir -p /var/www/html/repo/OracleLinux/ol7_UEKR5
# ln -s /repo/OracleLinux/ol7_UEKR5/getPackage/ /var/www/html/repo/OracleLinux/ol7_UEKR5/x86_64

GPD dosyamızı web sunucumuza yüklüyoruz.

cp /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle /var/www/html/RPM-GPG-KEY-oracle-ol7

Server tarafında işlemlerimiz bitti. Artık Client tarafına geçebiliriz. bu adımda işimiz gayet basit. Nano editörümiz ile etc dizini altında yum.repos.d alt dizinine girerek local-ol7.repo dosyası oluşturuoyurz.

#nano /etc/yum.repos.d/local-ol7.repo

Editör içerisine aşağıdaki satırları repo.sunucu.local kısmını kendi sunucu adımız ile değiştirerek kalan kısımları aynen ekliyoruz ve kayıt ederek çıkıyoruz.

[local_ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://repo.sunucu.local/repo/OracleLinux/ol7_latest/$basearch/
gpgkey=http://repo.sunucu.local/RPM-GPG-KEY-oracle-ol7
gpgcheck=1
enabled=1

[local_ol7_UEKR4]
name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://repo.sunucu.local/repo/OracleLinux/ol7_UEKR4/$basearch/
gpgkey=http://repo.sunucu.local/RPM-GPG-KEY-oracle-ol7
gpgcheck=1
enabled=1

[local_ol7_UEKR5]
name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://repo.sunucu.local/repo/OracleLinux/ol7_UEKR5/$basearch/
gpgkey=http://repo.sunucu.local/RPM-GPG-KEY-oracle-ol7
gpgcheck=1
enabled=1

Artık Client tarafında yapılan tüm güncellemeler local repository üzerinden gelecek. Peki Server tarafında yeni çıkan güncelleme paketlerini nasıl alacağız. Repo dizini içerisinde bulunan scripts alt dizinine repo.sh adında bir script oluşturalım.

#nano /repo/scripts/repo.sh

Aşağıdaki script’i değiştirmeden yapıştıralım.

#!/bin/bash

LOG_FILE=/repo/logs/repo_sync_$(date +%Y.%m.%d).log

# Remove old logs
find /repo/logs/repo_sync* -mtime +5 -delete; >> $LOG_FILE 2>&1

# Sync repositories
/usr/bin/reposync --newest-only --repoid=ol7_latest -p /repo/OracleLinux >> $LOG_FILE 2>&1
/usr/bin/reposync --newest-only --repoid=ol7_UEKR4 -p /repo/OracleLinux >> $LOG_FILE 2>&1
/usr/bin/reposync --newest-only --repoid=ol7_UEKR5 -p /repo/OracleLinux >> $LOG_FILE 2>&1

/usr/bin/createrepo /repo/OracleLinux/ol7_latest/getPackage/ >> $LOG_FILE 2>&1
/usr/bin/createrepo /repo/OracleLinux/ol7_UEKR4/getPackage/ >> $LOG_FILE 2>&1
/usr/bin/createrepo /repo/OracleLinux/ol7_UEKR5/getPackage/ >> $LOG_FILE 2>&1

Script için execute yetkisi verelim.

# chmod u+x /repo/scripts/repo.sh

Son olarak crontab üzerine ekleyelim.

0 1 * * * /repo/scripts/repo.sh > /dev/null 2>&1

Local repository için tüm işlemlerimiz hazır. Diğer yazılarımızda görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir