使用yum组织和部署相关组件的子系统的版本的方法

问题描述 投票:0回答:1

我们有一个由多个组件组成的分布式子系统,每个组件都在其自己的RPM包中部署到各种不同的RHEL / CentOS环境中。例如,可能会调用组件:

  • jl_bat融资,
  • JL_superman,和
  • JL_wonderwoman。

它们的部署如下:

  • 主机1: JL_batman JL_wonderwoman
  • 主机2: JL_superman

我们定期发布系统版本和维护版本。因此,最初的几个系统版本可能如下所示:

  • SR1: JL_batman-1.0-hg123.rpm JL_superman-2.7-hg651.rpm JL_wonderwoman-1.1-hg101.rpm
  • SR2: JL_batman-2.0-hg137.rpm JL_superman-2.7-hg651.rpm JL_wonderwoman-1.1-hg101.rpm
  • SR3: JL_batman-2.0-hg137.rpm JL_superman-2.8 hg655.rpm JL_wonderwoman-1.1-hg101.rpm

因此,在每个系统版本中,并非所有包都会更新。目前,我们在YUM repo上使用未在发行版之间更新的包的符号链接:

  • SR1: JL_batman-1.0-hg123.rpm JL_superman-2.7-hg651.rpm JL_wonderwoman-1.1-hg101.rpm
  • SR2: JL_batman-2.0-hg137.rpm JL_superman-2.7-hg651.rpm - > ../SR1/superman-2.7-hg651.rpm JL_wonderwoman-1.1-hg101.rpm - > ..SR1 / wonderwoman-1.1-hg101.rpm
  • SR3: JL_batman-2.0-hg137.rpm - > ../SR2/batman-2.0-hg137.rpm JL_superman-2.8 hg655.rpm JL_wonderwoman-1.1-hg101.rpm - > ..SR1 / wonderwoman-1.1-hg101.rpm

每个版本目录(SR1,SR2,SR3,...)都是YUM存储库。我们还使用符号链接链接到以下滚动存储库:

  • JL-old-stable - > SR1
  • JL-stable - > SR2
  • JL测试 - > SR3

这一切都在YUM repo服务器上进行管理,使用一些自行开发的脚本从Jenkins中提取包并将它们放入JL测试仓库(替换那里的任何旧版本)。当SR3测试完成并且它被提升为稳定时,我们按如下方式对符号链接进行抖动:

  • JL-old-stable - > SR2
  • JL-stable - > SR3
  • JL测试 - > SR4

每个生产环境都为JL-old-stable.repo和JL-stable.repo安装了yum .repo文件。测试环境还有一个JL-testing.repo文件。然后在每个环境中使用yum upgrade 'JL_*'以使其保持最新。工作正常,但有一些问题,主要是:

  1. 当SR3升级到稳定,但我们需要回滚到SR2时,我们需要使用像yum --disablerepo='JL-*' --enablerepo='JL-old-stable' downgrade 'JL-*'这样的东西。
  2. 除了安装新的JL-SR1.repo文件然后使用yum --disablerepo='JL-*' --enablerepo='JL-SR1' downgrade 'JL-*'之外,没有办法轻松地从SR3(稳定)回滚到SR1。

有没有更好的办法?

deployment centos rpm yum rhel
1个回答
0
投票

我会改为使用一个不提供文件的RPM,而是使用精确版本控制的Requires各种其他软件包。每个配置RPM的“版本”只是版本号。

OurConfig_SR_1.noarch要求:

  • JL_batman = 1.0
  • JL_superman = 2.7
  • JL_wonderwoman = 1.1

OurConfig_SR_2.noarch要求:

  • JL_batman = 2.0
  • JL_superman = 2.7
  • JL_wonderwoman = 1.1

然后你就可以将它们全部放在一个回购中,然后将versionlock放在机器上的OurConfig上,直到你准备移动它为止。使用rpm -qi OurConfig快速检查可以告诉您系统期望的内容。要求确切的版本应该阻止SR1系统自动将JL_batman升级到2.0(我当然没有测试过这个!)。

© www.soinside.com 2019 - 2024. All rights reserved.