我如何确保当我在不同的时间在两台不同的服务器上运行apt-get update,apt-get upgrade,我将获得相同的软件包? 我如何autotmate /执行此?
我目前正在看的(简化)用例是如果我升级到开发实例上的最新版本,并testing所有我的自定义软件,这需要一天或2。当我运行更新/升级生产机器,我只想升级到我以前testing过的版本。 这可以让我build立一个过程,比我目前更快,更安全地迭代更新的补丁。
理想情况下,我喜欢为第一次升级获取时间戳,然后在后续升级时强制更新该时间戳。 (但任何其他build议将是伟大的)
我考虑过调查一些选项,但我不确定他们是否有前途,他们需要一些工程时间,并且很好奇是否有一个更简单的方法来做到这一点。
1)创buildcaching版本的某种本地apt回购。 该回购可以拉第一次拉的所有最新版本,然后只有当随后查询返回。
2)看到像ansible / chef这样的configurationpipe理工具是否可以捕获在第一次拉取时更新的所有版本,然后强制第二次拉取那些确切的版本。
谢谢。
你需要使用apt-mirror或aptly这样的工具来运行你自己的apt库。 使用像apt-mirror这样的简单工具,您可以在更新开发环境之前同步您的资源库,并在更新生产环境之前不要再同步它。 使用像aptly这样更复杂的工具,您可以实现更复杂的包stream。
/var/cache/apt/archives/ 。 不是绝对必要的,但在未来的步骤中节省空间和时间的复制。 -d (仅下载)执行更新以下载软件包而不应用它们。 /var/cache/apt/archives/ 。 --no-download运行所有系统上的更新,强制系统使用升级候选。 免责声明:我没有自己testing过,但这与我在自己的生产环境中使用yum方式类似,以避免计划外的频道更新出现问题。
sciurus提到的本地镜像方法会更好,除非您不能完全控制本地镜像,并且要确保在集群修补程序之间不会发生同步。