技术存在的终级意义,是为了解决问题。

自建 CentOS yum 源(附 CentOS 5 yum 源解决办法)

自动化的理念包括自给自足,理论上可以保持内部集群不对外有任何业务之外的接触,一切数据交互全部交由特定对外节点来进行。

在这个前提下,自动化管理中心除了管理节点这一个重要作用只外,还是额外需要提供很多其他功能的,比如内部 DNS 解析、内部 NTP 服务、以及这里想说的 yum 源等等。

正文

我选择使用清华大学的镜像站做为同步对象,但是这整个镜像站的内容其实并不都是我们工作中需要的,所以为了节省空间,我们可以排除掉那些用不到的目录。

同步脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[rsync_yum.sh]

#!/bin/bash

#rsync的-L选项可以对软链接进行follow link
#如果想要完全同步复制软链接,则需要把-L改为-l
#如不加上面两个选项,则会跳过软链接文件

/usr/bin/rsync -rLtz4 --progress --delete --exclude-from=/data/shell/rsync-exclude.txt \
rsync://mirrors.tuna.tsinghua.edu.cn/centos/6 /data/mirrors/centos/6

/usr/bin/rsync -rLtz4 --progress --delete --exclude-from=/data/shell/rsync-exclude.txt \
rsync://mirrors.tuna.tsinghua.edu.cn/centos/7 /data/mirrors/centos/7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[rsync-exclude.txt]

- atomic/
- centosplus/
- clude/
- configmanagement/
- cr/
- dotnet/
- fasttrack/
- isos/
- nfv/
- opstools/
- paas/
- rt/
- sclo/
- storage/
- virt/
- os/i386
+ os/
- updates/i386
+ updates/
- extras/i386
+ extras/

脚本很简单,就是使用 rsync 进行同步,里面排除了很多我用不到的目录和文件,这个可以根据实际情况自由抉择。

然后设定计划任务定时执行就可以了。

至于怎么让其他节点服务器指向我们这个源服务器,一般来说可以用 Nginx 走 http 协议,或者用 ftp 协议等等都可以。反正只对内部网络开放,无论是配合 DNS 服务器、用 hosts 文件来访问、还是直接使用IP地址,那都是很简单的问题了,不再做详细说明。

相关拓展:CentOS 5 yum 源

目前的镜像站已经没有 CentOS 5 了,但是我们的一小部分旧机器还使用这个系统。

在网上能查到的所有教程都只是把 yum 指向国外的 vault.centos.org 这个网站,但是说实话这个网站的速度真的很慢。

但是自建 yum 源的话就很简单了。

只需要弄到一个 CentOS 5 的镜像,然后解压缩或者挂载,把里面的文件拷贝到固定目录,然后前面加个 Nginx 把文件挂出去,只对内部网络开通访问就可以了。

然后把 CentOS 5 服务器上的 repo 文件直接指向上面的地址就能直接彻底的解决问题。

打赏猫粮!!!