Strongding 2020-05-27
一、需求及实现方式介绍:
需求:现在各个软件版本更新迭代很快,在我们部署一套集群(比如:openstack)后,如果过一段时间想扩展集群时发现软件版本早已迭代更新,安装后导致和现有环境或多或少不兼容,比较麻烦,因此我们可以在集群搭建时就将所有的安装包下载到本地,使用本地仓库进行安装,可以保证软件版本不会发生变化。
实现方式:使用nginx + createrepo + downloadonly 搭建本地yum 源。
二、搭建
1、安装createrepo
# yum -y install createrepo
2、创建镜像存放目录,最好能挂在一个单独的分区
# mkdir /my_repo
3、安装nginx
# yum -y install nginx
# vim /etc/nginx/nginx.conf
server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  x.x.x.x;            #修改此行,yum源服务器的IP
        root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
        root    /my_repo;       #添加仓库的实际路径
        autoindex       on;     #关键所在,必须添加
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
# systemctl restart nginx.service #重启nginx 服务
4、安装downloadonly 插件包
# yum install yum-utils
5、下载镜像包
    命令格式:
      yumdownloader --resolve(可选,意为下依赖包) --destdir=软件存放位置 (可选) +软件包名
# yumdownloader --resolve nginx --destdir=/my_repo/nginx
    
6、生成镜像仓库,会在仓库目录下生成一个repodata 的目录。
# createrepo -p /my_repo/
三、客户端测试:
1、浏览器访问:
    
2、客户端修改yum 源
# cd /etc/yum.repos.d/
# mkdir back
# mv *.repo back
# vin Internal.repo
[base] name = "Internal_repo" baseurl = http://x.x.x.x #局域网yum 源IP地址 gpgcheck = 0 enabled = 1 [updates] name = "Internal_repo" baseurl = http://x.x.x.x gpgcheck = 0 enabled = 1
# yum repolist # 客户端repo 列表查看
      
# yum -y install nginx #客户端测试安装 nginx
      
四、后期维护
1、服务端
每次下载完镜像后,都需要更新yum仓库列表
# createrepo --update -p /my_repo
2、客户端
    #  <span><span><span><strong>yum </strong></span><span><span><strong>clean </strong></span><span><span><strong>all</strong></span>    #清除原有的yum信息</span></span></span></span>
五、拓展
1、同步网上现有的镜像源:
a、创建存储目录
# mkdir -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit
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 /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/
d、 建仓
      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/base/Packages
      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/extras/Packages
      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/updates/Packages
      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/epel
e、crontab定时同步
      # crontab -e
<span><strong>        1 2 * * * reposync -np /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/ </strong></span>     #-np:只同步更新的部分
2、挂在ISO镜像
a、创建挂在目录
# mkdir /my_repo/cdrom
b、挂在镜像
# mount -t iso9660 /dev/cdrom /my_repo/cdrom
c、建仓
# createrepo -p /my_repo/cdrom