一. 背景: 公司内部需要定制自己的rpm包,比较成熟的方案之一就是通过yum仓库的方式管理, 当然,可以自行通过程序来实现, 不过比较费劲。
环境: 我们环境比较复杂,分别有aws、ali、ten。 对应的系统版本也有6、7两个。 为了完全契合各运营商提供的系统。我们采用了运营商原生的镜像(可以自己制作后上传,但不能保证是否有坑)。 故我们需要针对不同的环境、版本打不同的rpm包。配置对应的yum仓库:
二. 设计结构:
yum_source]# tree -d
.
├── xiao_7
│ ├── ali
│ │ └── x86_64
│ │ └── repodata
│ ├── aws
│ │ └── x86_64
│ │ └── repodata
│ └── ten
│ └── x86_64
│ └── repodata
└── xiao_8
├── ali
│ └── x86_64
│ └── repodata
├── aws
│ └── x86_64
│ └── repodata
└── ten
| └── x86_64
│ └── repodata
三. 构建方式:
一个yum仓库的构建方式是很简单的。 通过createrepo工具即可:
#yum -y install createrepo
#createrepo -pdo /data2/yum_source/xiao_7/aws/x86_64/ /data2/yum_source/xiao_7/aws/x86_64/
放入相应的rpm包至/data2/yum_source/xiao_7/aws/x86_64/下
更新yum索引
createrepo --update /data2/yum_source/xiao_7/aws/x86_64/
http站点配置。 这里通过nginx,部署方式略。 配置如下:
server {
listen 80;
server_name yum.int.xiao.com.cn;
include trace.setting;
access_log /var/log/nginx/test.log main;
root /data2/yum_source;
}
client配置:
# cat /etc/yum.repos.d/xiao_package.repo
[xiao-source] #中间不能有空格
name=xiao package
baseurl=http://yum.int.xiao.com.cn/xiao_7/aws/$basearch/ #aws的$releasever比较变态(值为latest),参考/etc/yum.conf
gpgcheck=0
enabled=1
验证:
yum clean all && yum search xiao 。。。。。。
与初始化整合: 初始化获取实例环境,版本信息。然后下发对应的repo配置, 进行yum初始化部署。