对于一个项目,我需要设置一个系统,保证在大约100个Debian系统上安装完全相同版本的内核和所有软件包。系统可以通过ssh访问。并安装了一些单独的软件包。它们都具有或多或少相同的服务器硬件。
我想创建一个冻结版本的测试系统,在其中我将所有包都置于搁置状态。我将测试一切都在运行,然后将所有包的相同版本部署到其他100个系统。冻结状态将不时更新并再次部署。统一版本需要保持原样。更新不应该自动安装,至少不能从官方镜像安装。到目前为止,安装程序包含一个测试系统和一个部署系统。部署系统从测试系统获取冻结状态并将其部署到100。
解决方案应该坚如磐石,尽可能简单,必要时尽可能复杂。我有不同的方法,但我想听听你的想法。
- 创建一个Debian软件包,该软件包包含所有其他需要的软件包作为依赖,并具有确切的版本。
- 从测试系统创建选择文件。- 设置一个单独的debian镜像,只提供我想要的软件包。100的源列表需要更改一次,但在此之后不再需要手动安装,并且更新将仅从我的镜像自动应用。
我考虑为部署/镜像服务器使用Ansible或shell脚本。用于部署,也用于从测试系统获得“冻结状态”。
再次要求:
- 坚如磐石
- 尽可能简单
- 100个运行系统的所有已安装软件的版本完全相同
到目前为止,好的。我很欣赏你的想法,并希望听到赞成和反对的不同方法。
我想了很多关于什么是最好的和失踪的经验来决定。
1条答案
按热度按时间wkftcu5l1#
我建议寻找不需要大量编码的解决方案,也不像Ansible那样“解雇和遗忘”。
我们使用qbee.io(https://qbee.io/)平台进行类似的事情超过1年。
qbee允许你只部署你想要的包,然后保持状态。如果设备上的软件包或软件包配置被更改(比如说由操作系统或用户自动更新)-它具有自我修复功能,因此它将恢复其配置管理中定义的先前状态。
qbee支持自定义包存储库:参见文档:https://qbee.io/docs/qbee-define-repositories.html
我们使用它的方式:
我们把我们的基础设施分成两组-开发和生产。
我们通过他们的REST API将qbee集成到我们的GitHub CI管道中,因此一旦新包准备就绪,它就会自动部署到开发设备上。你也可以使用他们的UI。
一旦我们满意-我们更新包文件,然后它会自动分发到所有的prod设备。Qbee报告安装成功还是失败。
作为奖励,您还可以获得监控,报告,审计和远程控制台,以防您想要访问设备。
在qbee之前,我们尝试了几种替代解决方案,但没有一种能提供完整的解决方案。