一、實驗背景
用nexus oss進行yum代理,所緩存的數據都是yum源的數據。
如果需要使用特定版本或者自己編譯的包,這種方法就不靈了。
本文講述nexus oss創(chuàng)建hosted類型yum倉庫,hosted類型是自建倉庫,上傳rpm包后會生成repodata文件。
nexus oss和nexus pro有什么區(qū)別?


二、實驗環(huán)境
操作系統(tǒng): CentOS7.5 Minimal
nexusServer: 192.168.1.107
nexusClient:192.168.1.103
三、創(chuàng)建hosted類型yum倉庫
CentOS7.x上用nexus搭建yum私有倉庫
http://www.itdecent.cn/p/0255cd957e15
1.創(chuàng)建blob存儲,為其創(chuàng)建一個單獨的存儲空間,命名為yum


2.創(chuàng)建hosted類型的yum倉庫
Name::定義一個名稱yumDev
Storage:Blob store,我們下拉選擇前面創(chuàng)建好的專用blob:yum。
Hosted:開發(fā)環(huán)境,我們運行重復發(fā)布,因此Delpoyment policy 我們選擇Allow redeploy




四、創(chuàng)建role和user
Roles
https://help.sonatype.com/repomanager3/security/roles
Privileges
https://help.sonatype.com/repomanager3/security/privileges
Users
https://help.sonatype.com/repomanager3/security/users
nexus中role是一組權限(privilege)的集合,可以授予創(chuàng)建的用戶,做權限控制。
nexus中默認的 role 有 nx-admin? 和?nx-anonymous



nexus中默認的 user 有?admin? 和?anonymous



我們創(chuàng)建一個nx-yum的role,然后授予創(chuàng)建的test用戶,根據需要授予相應的權限。





用戶名密碼:test/Test@123

五、客戶端rpm包上傳測試
從服務端web界面獲取hosted類型倉庫地址:http://192.168.1.107:8081/repository/yumDev/



# curl -v --user 'test:Test@123' --upload-file httpd-2.4.6-88.el7.centos.x86_64.rpm http://192.168.1.107:8081/repository/yumDev/httpd-2.4.6-88.el7.centos.x86_64.rpm
如果rpm較多,寫一個腳本遍歷循環(huán)上傳




倉庫第一次上傳文件時,會自動生成repodata文件,以后上傳的文件會間隔一段時間后生成,可點擊Rebuild Index重建repodata。
如果某個包已不再需要,可在Brose中選擇該文件,然后Delete asset刪除之。
如果某個倉庫不再需要,可選Delete repository刪除之。
當然,我們沒法通過上傳一個?httpd-2.4.6-88.el7.centos.x86_64.rpm 到nexus服務端,然后再客戶端下載http,會報缺少依賴!
yum倉庫會自動分析解決依賴,前提是你已經需要安裝的主包及其依賴全部上傳!
nexusyum倉庫的方便之處是我們上傳rpm主包及其依賴,它會自動定時createrepo創(chuàng)建清單文件,而不用手動了!
六、測試將一個軟件主包及其依賴全部上傳到nexus的yum倉庫
在一臺聯網的和nexusServer互通的服務器上下載ceph主包及其依賴
添加ceph官方y(tǒng)um鏡像倉庫
#? vim? ?/etc/yum.repos.d/ceph.repo
##################################################
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
##################################################

# yum clean all
# yum repolist?
# yum list all |grep ceph

# yum? -y install epel-release?
# yum -y install yum-utils?
# yum -y install createrepo?
# mkdir /root/cephDeps?
# repotrack??ceph ceph-mgr ceph-mon ceph-mds ceph-osd ceph-fuse?ceph-radosgw? -p??/root/cephDeps
#? ll? /root/cephDeps?

用腳本將ceph主包及其依賴上傳到nexusServer的yum倉庫
#? vim? push_rpm.sh
#################################################################################
#!/bin/bash
parent_path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )
cd "$parent_path"
for rpm in? $(ls? -l? *.rpm | awk? '{print $9}')
do
? curl -v --user 'test:Test@123' --upload-file $rpm? http://192.168.1.107:8081/repository/yumDev/$rpm
? if [ $? -ne 0 ]; then
? ? exit 1
? fi
done
###################################################################################

# sh? push_rpm.sh?



客戶端測試從hosted倉庫下載rpm
在客戶端創(chuàng)建倉庫文件
# vim? ?/etc/yum.repos.d/nexus.repo
#################################################################
[nexus]
name=Nexus Yum Repository
baseurl=http://192.168.1.107:8081/repository/yumDev/
enabled=1
gpgcheck=0
###################################################################
注:此出客戶端的倉庫文件中的 baseurl=http://192.168.1.107:8081/repository/yumDev/ 后面沒有$releasever/os/$basearch/

#? yum clean all?
# yum repolist?
# yum -y install ceph ceph-mds ceph-mgr ceph-osd ceph-mon



七、參考
CentOS7.x上用nexus搭建yum私有倉庫
http://www.itdecent.cn/p/0255cd957e15
Nexus OSS配置hosted類型yum倉庫
https://qgdlsj.com/nexus-oss-yum-hosted
用Nexus自建Yum Repository代理
https://edxi.github.io/2018/04/16/NexusYum
CentOS7.x上ceph單機的離線部署和cephFS文件系統(tǒng)的使用
http://www.itdecent.cn/p/b8f085ca0307
RPM Repositories
https://www.jfrog.com/confluence/display/RTF/RPM+Repositories
Nexus Repository Manager OSS
https://www.sonatype.com/nexus-repository-oss
Yum Repositories
https://help.sonatype.com/repomanager3/formats/yum-repositories
Nexus Repository Manager 3.5: Yum Proxy Support Now Available
https://blog.sonatype.com/nexus-repository-manager-3.5
Nexus Repository OSS 3安裝配置使用
http://shiyanjun.cn/archives/1768.html
Nexus Repository OSS 3.x簡介
https://note.qidong.name/2017/08/nexus-repository-oss
Nexus Repository Manager OSS 3.x 安裝配置
https://blog.csdn.net/chenfei2341/article/details/80431700