一、需求及实现方式介绍:

  需求:现在各个软件版本更新迭代很快,在我们部署一套集群(比如:openstack)后,如果过一段时间想扩展集群时发现软件版本早已迭代更新,安装后导致和现有环境或多或少不兼容,比较麻烦,因此我们可以在集群搭建时就将所有的安装包下载到本地,使用本地仓库进行安装,可以保证软件版本不会发生变化。

  实现方式:使用vftpd + createrepo + downloadonly 搭建本地yum 源。

二、搭建

  1、安装createrepo

yum -y install createrep

  2、创建镜像存放目录,最好能挂在一个单独的分区

mkdir /var/ftp/pub/Aliyun

  3、安装vftpd

yum install vsftpd
systemctl  start  vsftpd.service
systemctl  enable  vsftpd.service

  4、安装downloadonly 插件包

# yum install yum-utils

  5、下载镜像包

    (1)、同步网上现有的镜像源:

    a、创建存储目录

# mkdir -p /var/ftp/pub/Aliyun 

    b、 准备同步阿里云的源,base,updates,extras,epel, 确保/etc/yum.repos.d/ 下只有下面这两个repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    c、 开始同步下载包

reposync -p /var/ftp/pub/Aliyun 

image-20210331112054830

image-20210331103512003

    d、 建仓

createrepo -p /var/ftp/pub/Aliyun/base/Packages

image-20210331104619446

createrepo -p /var/ftp/pub/Aliyun/extras/Packages

image-20210331105515951

createrepo -p /var/ftp/pub/Aliyun/updates/Packages

image-20210331105620745

createrepo -p /var/ftp/pub/Aliyun/epel

image-20210331105742879

    e、crontab定时同步

crontab -e
1 2 * * * reposync -np /var/ftp/pub/Aliyun   #-np:只同步更新的部分

    (2)、挂载ISO镜像

    a、创建挂载目录

mkdir /var/ftp/pub/cdrom

    b、挂载镜像

mount -t iso9660 /dev/cdrom  /var/ftp/pub/cdrom

    c、建仓

createrepo -p /var/ftp/pub/cdrom

    6、生成镜像仓库,会在仓库目录下生成一个repodata 的目录

createrepo -p /var/ftb/pub

三、客户端测试:

    1、客户端修改yum 源

 cd /etc/yum.repos.d
mkdir bak
mv \*.repo bak
vim CentOS-Media.repo  
[base]
name = " CentOS-7 - Media"
baseurl =ftp://172.16.200.200/pub    #局域网yum 源IP地址
gpgcheck = 0
enabled = 1
[updates]
name = " CentOS-7 - Media"
baseurl = ftp://172.16.200.200/pub
gpgcheck = 0
enabled = 1
    **# `yum repolist`**   # 客户端repo 列表查看

image-20210331110805553

yum list all | grep nginx  #客户端查看软件列表 

image-20210331110739812

四、后期维护

  1、服务端

    每次下载完镜像后,都需要更新yum仓库列表

createrepo --update -p /var/ftp/pub

image-20210331111124989

  2、客户端

yum clean all  #清除原有的yum信息

image-20210331111150808