首页 科技互联网正文

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

admin 科技互联网 2020-09-11 02:13:12 3 0

原标题:如何优雅的打造 All-in One 仓库

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

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

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

Nexus 是什么?

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

情景一

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

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

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

安装 Nexus 服务

在内网找一台可以访问公网的机器,安装 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" 也需要以 "/" 结尾!

执行安装

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

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

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

软件包有两种情况

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

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

可以看到,出现了一个 "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 文件

执行安装

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

情景三

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

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

尾声

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

| 作者简介

刘志杰| 现就职于国双科技,高级数据库工程师 大型项目交付 经验,丰富的数据库管理经验,主要负责 MySQL、PostgresSQL 和 Oracle 相关的数据库运维工作。喜欢学习分享技术,和大家共同提高!

    知数堂精品课程,MySQL、SQL优化、Python、Elastic等

    MySQL课程已全面升级到MySQL 8.0版本,现在上车刚刚好,一起开启MySQL 8.0的修行之旅吧。

    加入知数堂

    挑战50万+年薪!

    知数堂《MySQL实战优化课》已正式上线腾讯课堂,扫码入群了解课程详情吧,撩助教妹子还有优惠哟

知数堂精品课程,MySQL、SQL优化、Python、Elastic等

MySQL课程已全面升级到MySQL 8.0版本,现在上车刚刚好,一起开启MySQL 8.0的修行之旅吧。

加入知数堂

挑战50万+年薪!

知数堂《MySQL实战优化课》已正式上线腾讯课堂,扫码入群了解课程详情吧,撩助教妹子还有优惠哟返回,科技大学

评论