使用OSS搭建私有云內網yum倉庫的方法

kirin(麒麟)發表於2023-11-27

版權宣告:原創作品,謝絕轉載!否則將追究法律責任。 ————— 作者:kirin

使用OSS搭建私有云內網yum倉庫的方法

文字&圖片內容已脫敏

#、前幾天接到一個搭建內網yum源的任務。剛接到這個任務的時候還是比較頭疼的,因為內部有很多VPC。VPC與VPC之間是不互通的,又不能打高速通道,也不可能每個VPC下邊都建一個yum倉庫,也很不現實!
#、我想到了兩種方法:
一、在任意VPC下建一個ECS,然後建立一個公共讀的OSS作為yum源,因為OSS可以設定不繫結VPC,這樣的話任意VPC下的ECS都可以去訪問它了。
二、在任意VPC下建一個ECS作為yum源,然後繫結一個內網SLB。內網機器透過訪問SLB到後端的ECS上拉取軟體包。

#、這裡我選擇了第一種方法。因為是內網環境,在自己的電腦上下載了VMware,安裝了Anolis7/8的系統,透過VM虛擬機器訪問公網,下載所有rpm包(網速太慢了。。。下了3天),拷包到內網oss,形成一個yum倉庫後為內網機器提供yum源。

一、環境準備

1.1、資源申請

#1、 申請一臺ECS
配置為:
anolis8.6-X86系統、4C8G+SSD100GB+高效雲盤500GB

#2、申請一臺OSS
配置為:500GB

1.2、下載公共yum源

#、準備公網機器
1、因現場環境不能連外網。在自己的電腦上安裝的VMware虛擬機器,安裝的Anolis7/8系統。硬碟空間500G,掛載到/home/目錄。連線外網,下載yum源

2、檢查是否能正常請求公共yum源:
ping www.baidu.com

3、安裝包下載工具(該工具是YUM工具包的子集)
yum install -y yum-utils

4、啟用epel軟體源
yum install -y  epel-release

1.2.1、Anolis7下載

reposync -r $(源名稱) -p $(下載目錄)
#、使用方法示例:
[root@anolis7 ~]# reposync -r base -p /home/anolis7/
 
#、引數解釋:
-r :指定本地已經配置的yum倉庫的repo源名稱
-p :指定下載的檔案儲存路徑

1.2.2、Anolis8下載

#、使用方法示例:
[root@anolis8 ~]# reposync --repo BaseOS -p /home/anolis8/
 
#、引數解釋:
--repo :指定本地已經配置的yum倉庫的repo源名稱
-p :指定下載的檔案儲存路徑

二、配置步驟

2.1、安裝createrepo工具

#、createrepo是一個對rpm檔案進行索引建立的工具。 大體功能就是對指定目錄下的rpm檔案進行檢索,把每個rpm檔案的資訊儲存到指定的索引檔案中,這樣方便遠端yum命令在安裝更新時進行檢索。
yum install -y createrepo

2.2、安裝python2

#、createrepo工具需要用python2使用
yum install -y python2

2.3、索引建立

#1、yum軟體包下載完成後,進入對應的軟體包存放的目錄執行索引建立命令
#、使用方法示例:
[root@anolis7 ~]# cd /home/Anolis7.9/os/Packages/
[root@anolis7 /home/Anolis7.9/os/Packages]# createrepo .

#2、等待一會兒,軟體包比較多的話,執行時間比較長。
索引建立完成後會出現一個`repodata`目錄,裡面存放檢索檔案repomd.xml

#3、注意!!每個源目錄下的Packages/目錄下都要執行`createrepo .`命令建立索引。沒有軟體包的無需建立,刪除空目錄即可

2.4、打包yum軟體包目錄,上傳至內網機中

 tar -zcvf Anolis7.tar.gz /home/Anolis7.9
 tar -zcvf Anolis8.tar.gz /home/Anolis8.6

2.5、下載ossutil工具上傳到內網機器中並配置

https://gosspublic.alicdn.com/ossutil/1.7.1/ossutil64

2.5.1、安裝ossutil工具

#、將下載好的ossutil工具上傳到內網機器中,然後執行以下命令
chmod +x ossutil64
mv ossutil64 /usr/local/bin/

2.5.2、配置ossutil工具(互動式配置)

#、根據提示配置:oss endpoint、accessKeyID、accessKeySecret資訊,其它預設回車即可
ossutil64 config

The command creates a configuration file and stores credentials.
Please enter the config file name,the file name can include path(default /root/.ossutilconfig, carriage return will use the default file. If you specified this option to other file, you should specify --config-file option to the file when you use other commands):
No config file entered, will use the default config file /root/.ossutilconfig
For the following settings, carriage return means skip the configuration. Please try "help config" to see the meaning of the settings
Please enter language(CH/EN, default is:EN, the configuration will go into effect after the command successfully executed):
Please enter endpoint:·`xxxxxxxxxxxxxxxx`
Please enter accessKeyID:`xxxxxxxxxxxx`
Please enter accessKeySecret:`xxxxxxxxxxxx`
Please enter stsToken:

2.5.3、確認配置是否正確,執行以下命令是否能正常返回oss的bucket

ossutil64 ls oss://test

#、注意://test請替換為對應的bucket

2.6、解壓上傳的tar包

tar xvf Anolis7.tar.gz -C /home/anolis7-x86/
tar xvf Anolis8.tar.gz -C /home/anolis8-x86/

2.7、上傳包到公開讀的oss

ossutil64 cp -r home/ oss://$(bucket)/mirrors/

2.8、客戶端修改環境yum配置

2.8.1、登入到分配的 ECS雲主機系統後,執行如下命令:

cd /etc/
mv /etc/yum.repos.d /etc/yum.repos.d.bak
mkdir /etc/yum.repos.d
cd /etc/yum.repos.d

2.8.2、Anolis7使用以下配置:

cat >> /etc/yum.repos.d/store.repo <<EOF
[anolis7-os-x86]
name=anolis7-os-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis7.9/os/Packages
enabled=1
gpgcheck=0
[anolis7-updates-x86]
name=anolis7-updates-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis7.9/updates/Packages
enabled=1
gpgcheck=0
EOF

2.8.3、Anolis8使用以下配置:

cat >> /etc/yum.repos.d/store.repo <<EOF
[anolis8-AppStream-x86]
name=anolis8-AppStream-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis8.6/AppStream/Packages
enabled=1
gpgcheck=0
[anolis8-BaseOS-x86]
name=anolis8-BaseOS-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis8.6/BaseOS/Packages
enabled=1
gpgcheck=0
[anolis8-Extras-x86]
name=anolis8-Extras-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis8.6/Extras/Packages
enabled=1
gpgcheck=0
[anolis8-Plus-x86]
name=anolis8-Plus-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis8.6/Plus/Packages
enabled=1
gpgcheck=0
[anolis8-PowerTools-x86]
name=anolis8-PowerTools-Packages
baseurl=http://$(oss內網地址)/mirrors/Anolis8.6/PowerTools/Packages
enabled=1
gpgcheck=0
EOF

三、驗證方法

3.1、客戶端確認yum源可用

3.1.1、 執行以下命令清空快取並建立

yum clean all
yum makecache
Anolis7

Anolis8

3.2、執行yum repolist可以看到如下資訊即為正常

yum repolist
Anolis7

Anolis8

3.3、回退方法

#、執行已下命令:
cd /etc/
rm -rf yum.repos.d
mv yum.repos.d.bak/ yum.repos.d

相關文章