前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何优雅的打造 All-in One 仓库

如何优雅的打造 All-in One 仓库

作者头像
老叶茶馆
发布2020-09-15 10:19:31
6530
发布2020-09-15 10:19:31
举报

做过大型项目的同学一定都搞过自定义 yum 仓库,自定义 yum 在网上也有很多种方案,但今天我们来个不一样的玩法!

在开始之前先来抛出几个问题

  • 如何快速的制作一个仓库?
  • 如何快速的制作一个最精简仓库?
  • 如何快速的制作一个包含 docker、pypi、yum 和 maven 等等的 All-in One 仓库?
  • 如何在一个离线环境中快速的安装我们所需要的软件包?

Nexus 是什么?

简单来说 Nexus 是一个全能的仓储管理工具,它能帮我们解决有关软件包的一系列问题。下面我们来还原几个真实的场景,接下来我们就请上今天的主角, Nexus 闪亮全场!

情景一

公司接了一个超大型项目,需要在用户的离线环境中部署公司数十套产品。那么这个光荣而艰巨的任务就交到运维同学身上吧!

吃饭时间看见运维同学闷闷不乐,于是不解的过去问他,公司有大项目了,为啥还愁眉苦脸的呀?运维同学说,这十几套产品,要安装的软件一大堆,软件包依赖问题一大堆,这可如何是好呀。

我拍了拍运维同学的肩膀对他说,信杰哥,杰哥带你飞!

安装 Nexus 服务

在内网找一台可以访问公网的机器,安装 Nexus 服务

解压软件

代码语言:javascript
复制
tar xzf nexus-3.14.0-04-unix.tar.gz -C /data/sonatype-work/nexus3echo 'NEXUS_HOME="/data/nexus-3.14.0-04"' >> ~/.bashrcecho 'run_as_user="root"' >> /data/nexus-3.14.0-04/bin/nexus.rc

服务配置

代码语言:javascript
复制
shell> vim /etc/systemd/system/nexus.service
[Unit]Description=nexus serviceAfter=network.target
[Service]Type=forkingLimitNOFILE=65536ExecStart=/data/nexus-3.14.0-04/bin/nexus startExecStop=/data/nexus-3.14.0-04/bin/nexus stopUser=rootRestart=on-abort
[Install]WantedBy=multi-user.target

启动服务

代码语言:javascript
复制
systemctl reload-daemonsystemctl start nexus

登录

http://10.200.60.21:8081/

默认账号密码: admin/admin123

登录后记得修改 admin 密码

配置 yum proxy

创建 repository

选择 "yum(proxy)"

确定清华 Yum 仓库地址

填写 "name" 和 "Remote storage",注意 "Remote storage" 需要以 "/" 结尾

Repository 创建完成后

确定 Repository 的状态,"Online - Remote Available" 才是正确状态哦

编写客户端 Yum 配置文件,注意 "baseurl" 也需要以 "/" 结尾!

代码语言:javascript
复制
shell> vim tsinghua.repo[tsinghua]name=Tsinghua RHEL/CentOS $releasever - $basearchbaseurl=http://admin:admin123@10.200.60.21:8081/repository/tsinghua/$releasever/os/$basearch/enabled=1gpgcheck=0

执行安装

代码语言:javascript
复制
yum clean all; yum makecacheyum install http

安装完成后查看仓储中已经有了已安装过的 rpm 包

看到这里,不知道各位小伙伴有没有看明白,以上操作是我们使用 Nexus 仓库中 Yum proxy 的功能,创建了一个代理清华 Yum 源的 Repository,然后在内网的机器上,配置好指向 Nexus 中的 Repository,这时再安装软件,就会通过 Nexus 找到清华 Yum 源中的软件包进行安装。

只要运维同学使用了配置好的 Yum 源,所有安装过的软件都会记录在这里。到时测试完成后,批量把软件包进行下载,再通过 Nexus 创建私有仓储即可完美使用。

软件包有两种情况

  • 如果软件包不存在,则 Nexus 会从 Proxy 端远程下载软件包
  • 如果软件包存在,则直接返回给客户端使用

那可能有同学问了,如果清华 Yum 源的包不够用怎么办?我们还可以再添加 163、 epel 的源呀,所以只要能找到提供 Yum 的地址,都可以尽情的使用 Nexus yum proxy。并且以上配置不区别操作系统版本,如 CentOS 6 也可以使用,不信?我们来瞧瞧~

代码语言:javascript
复制
shell> cat /etc/*release*CentOS release 6.9 (Final)LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarchcat: /etc/lsb-release.d: Is a directoryCentOS release 6.9 (Final)CentOS release 6.9 (Final)cpe:/o:centos:linux:6:GA
yum clean all; yum makecacheyum install httpd -y

可以看到,出现了一个 "6" 的目录,分支下也生成了 http 相关的 rpm 包

大家想想看,这是为什么呢?

情景二

一个 DB 小 A 跑来找我,说杰哥,我要装个 MySQL 8.0,可是咱们内网 Yum 源里没安装包呀,公司下载又特别慢,你有没有办法呀?

我看了他一眼,告诉他,信杰哥,不翻车。大家说说我们有什么办法来帮助他呢?

找到 MySQL 官方 Yum 源

下载下来,定晴一看,怎么是个 rpm 包呀?不慌,rpm 本身就是个压缩包,我们用压缩工具打开看看

原来 repo 文件藏在里面呀,这里有两个 repo 文件

  • mysql-community-source.repo
  • mysql-community.repo

让我们来猜猜,带有 source 的,是有关源码的仓库,不带 source 的,是编译好打包的 rpm 包,我们直接打开 mysql-community.repo,赫然看到,原来 MySQL 官方 Yum 源都在这里呢,里面内容相信大家都不陌生吧。

看到这里,是不是大家又明白点什么了!没错,有了官方 Yum 源地址,我们就可以在 Nexus 上创建 Yum proxy

编写 repo 文件

代码语言:javascript
复制
shell> cat mysql8.repo[mysql8]name=Mysql for RHEL/CentOS $releasever - $basearchbaseurl=http://admin:admin123@10.200.60.21:8081/repository/MySQL8.0/$releasever/$basearch/enabled=1gpgcheck=0

执行安装

代码语言:javascript
复制
yum install yum install mysql-community-client-8.0.11 mysql-community-server-8.0.11

同样,此 Yum 源同时支持 CentOS 6 和 CentOS 7,把同样的 repo 文件放到 CentOS 6 机器上,执行安装。

情景三

这一天,又一个运维小哥跑来找我,说杰哥杰哥,我们这次有好多需求,要下载好多 docker 镜像,又要下载好多 pypi 镜像,还要安装各个版本的 MySQL,我们搞不定啦,快来支持我们一下啊~~~

我吐……这下杰哥帮不了你了,给你份文档自己看着办吧。哈哈

尾声

结合以上几个情景,相信大家对 Nexus 都有一个大致的了解,Nexus 的权限管理、LDAP,还有 https 都有相应的支持,我们甚至可以把它当做 FTP 服务器来用,我们的 CI/CD 流程也已经集成了 Nexus 。所以 Nexus 还有好多好玩的,等着大家探(入)索(坑)哈!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老叶茶馆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 情景一
    • 安装 Nexus 服务
      • 登录
        • 配置 yum proxy
        • 情景二
          • 找到 MySQL 官方 Yum 源
          • 情景三
          • 尾声
          相关产品与服务
          云数据库 MySQL
          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档