镜像仓库的搭建
镜像仓库主要做两个,一个是 Centos 官方的仓库,作为日常软件安装,一个是 puppetlabs 的仓库,安装 puppet 使用。
1.创建一个 repo 目录
mkdir /home/repo
2.Centos 官方的仓库是支持 rsync 的,使用如下脚本 yum-repo-update.sh,每天定时就可以同步( rsync 指定 delete 参数删除本地已经不存在镜像中的包,可以避免一些重复包的问题 ):
#!/bin/bash
rsync="rsync -avrt –bwlimit=10240 –delete"
mirror="rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/"
local="/home/repo"
verlist="6 7"
archlist="x86_64"
baselist="os updates extras centosplus contrib"
for ver in $verlist
do
for arch in $archlist
do
for base in $baselist
do
remote=$mirror/$ver/$base/$arch/
mkdir -p $local/centos/$ver/$base/$arch/
$rsync $remote $local/centos/$ver/$base/$arch/
done
done
done
3.puppetlabs 仓库不支持 rsync, 我们使用 yum-utils 中的 reposync来同步,该命名会判断已存在文件而不下载。
先安装 yum-utils:
yum install yum-utils
然后配置脚本,也每天定时跑同步即可(这里注意,reposync 只能同步与宿主机相同版本的软件包,这里我们就只同步 centos6 版本的)
首先要安装一下 puppetlbas 的仓库。
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
最终脚本:
#!/bin/bash
rsync="rsync -avrt –bwlimit=10240 –delete"
mirror="rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/"
local="/home/repo"
verlist="6 7"
archlist="x86_64"
baselist="os updates extras centosplus contrib"
for ver in $verlist
do
for arch in $archlist
do
for base in $baselist
do
remote=$mirror/$ver/$base/$arch/
mkdir -p $local/centos/$ver/$base/$arch/
$rsync $remote $local/centos/$ver/$base/$arch/
done
done
done
mkdir -p $local/puppetlabs/6/x86_64
cd $local/puppetlabs/6/x86_64
reposync –repoid=puppetlabs-products
自建仓库的搭建
自建仓库用于公司内部自己打的 rpm 包。
yum -y install createrepo
mkdir -p /home/repo/wandoulabs/6/x86_64/
createrepo /home/repo/wandoulabs/6/x86_64/
入口域名
在服务器上搭建 Nginx,配置文件类似:
server {
listen 80;
server_name mirrors.internal.nosa.me;
access_log logs/mirrors.internal.nosa.access.log;
root /home/repo;
location / {
autoindex on;
index index.html;
}
}
构建仓库 release 包
将仓库的配置打包成一个 rpm 包,方便管理和升级。
1.repo 文件
[wbase]
name=CentOS-$releasever - Base Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/os/$basearch/
gpgcheck=0
[wupdates]
name=CentOS-$releasever - Updates Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/updates/$basearch/
gpgcheck=0
[wextras]
name=CentOS-$releasever - Extras Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/extras/$basearch/
gpgcheck=0
[wcentosplus]
name=CentOS-$releasever - Plus Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/centosplus/$basearch/
gpgcheck=0
enabled=0
[wcontrib]
name=CentOS-$releasever - Contrib Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/contrib/$basearch/
gpgcheck=0
enabled=0
[puppetlabs-products]
name=CentOS-$releasever - Puppetlabs Wandoulabs
baseurl=http://mirrors.internal.nosa.me/puppetlabs/$releasever/$basearch/puppetlabs-products
gpgcheck=0
[epel]
name=CentOS-$releasever - EPEL Wandoulabs
baseurl=http://mirrors.internal.nosa.me/epel/$releasever/$basearch/epel
gpgcheck=0
[wandoulabs]
name=CentOS-$releasesever - Wandoulabs
baseurl=http://mirrors.internal.nosa.me/wandoulabs/$releasever/$basearch/
gpgcheck=0
2.spec 文件
Summary: yum repository
Name: wandoulabs-release
Version: 0.0.13
Release: 1.el6
License: GPL 2 license
%description
This is the repository package
%prep
cp -rf $RPM_SOURCE_DIR/wandoulabs-release .
%build
%install
mkdir -p %{buildroot}
mkdir -p %{buildroot}/etc/yum.repos.d/
mkdir -p %{buildroot}/etc/pki/rpm-gpg/wandoulabs/
cp wandoulabs-release/wandoulabs.repo %{buildroot}/etc/yum.repos.d/wandoulabs.repo
%preun
%files
/etc/yum.repos.d/wandoulabs.repo
3.使用 rpmbuild -bb 打包,然后把 rpm 放入自建仓库中。
使用自建仓库
1.把现有 repo 文件删除
rm /etc/yum.repo.d/*
2.安装自建仓库的 rpm 包。
3.清理环境( yum clean all )后就可以正常使用
自建仓库自动化管理
在系统自动化安装时,会把这个 wandoulabs-relase 包安装上,之后该包会进入 puppet 的管理范围,保持最新的 wandoulabs-release 包。
如果有新的仓库需要添加, 同步完仓库后,将新的 mirror 仓库路径加入配置,打包一个新版本的 wandoulabs-release 包,放入自建仓库中,各服务器会自动更新仓库包。