中央仓库托管不同平台/架构的各种二进制应用程序

53次阅读
没有评论

问题描述

希望提高使用Ansible管理虚拟机(VM)时的自动化和性能。他的一个使用案例是在各种操作系统上安装自定义软件,例如Red-Hat,Ubuntu,Centos。该软件使用单文件安装程序进行分发,比如在Red-Hat和Centos上安装MySQL数据库。

用户最近了解到了“仓库管理器”(或类似的东西),但他不知道应该在哪里查找或学习更多相关工具的信息,也不清楚官方的术语是什么。他希望这个仓库容易使用,比如,他只需将二进制文件放在其中,并对其进行一些标记,比如64位、版本3.3、Centos。

目前,用户有以下解决方案,但不太喜欢在NFS服务器上托管二进制文件:

name: Get mySQL binary
command: "find {{ nfs }} -name \"*mysql*\""
register: mySQL_location

name: Install mySQL
command: "{{mySQL_location.stdout}} --option 1 --option 2"
become: yes

典型的用例如下:
1. 我想在Centos上安装“软件A”。
2. 我使用Ansible从“中央仓库”获取适用于该操作系统的“软件A”的适当版本。
3. 我使用一个Ansible模块,指定版本、操作系统等,然后下载二进制文件(或多个二进制文件)到虚拟机。这应该很快,因为它将通过本地网络进行传输,即使是100 MB+的二进制文件。之后,Ansible安装它。
4. Ansible角色应该是可配置的,以影响安装设置等。
5. 接下来,我希望重复使用相同的角色,轻松地在Red-Hat上做同样的事情。

用户的目标是在新版本发布时,能够轻松地维护Ansible Playbooks,而不需要在Playbook中更改任何内容,只需在仓库中为新版本的“软件A”添加或替换一个新的二进制文件。

用户了解到YUM软件包管理器在某种程度上可以实现这一点,但他想知道还有哪些其他选项(如果有的话)。

解决方案

请注意以下操作可能涉及版本差异,建议在执行前做好备份。

方案1 – 使用二进制仓库管理器

您的场景非常适合使用二进制仓库管理器(Binary Repository Manager,BRM)。BRM的主要特性是作为二进制文件的中央存储系统,但还包括许多其他功能,包括:

  1. 版本控制
  2. 标记
  3. 权限管理
  4. 日志/审计

使用BRM比典型的源代码仓库系统(如Git或SVN)更轻量级。这些系统会包含比二进制文件需要的更多元数据。

我个人使用过JFrog的Artifactory,但我也听说过关于Sonatype Nexus的很多好评。

方案2 – 使用系统如Foreman/Katello和Ansible插件

如果您的二进制文件已经打包成.deb或.rpm文件,您还可以考虑使用类似Foreman/KatelloAnsible插件的系统。Katello最初是Foreman的插件,然后合并到Foreman项目中。它由Red Hat支持,并在他们的许可和支持版本中重新品牌为Red Hat Satellite 6。虽然整个系统主要用于管理机器的生命周期(包括物理和虚拟机器),但它也可以管理Docker容器。

但是,对于软件包管理,Katello允许您在构建完软件包后将其导入。您还可以创建环境和内容视图,以版本化和控制服务器在何时获取什么。基本上,这为您提供了管理更新发布的WSUS服务器的所有好处。

作为额外的奖励,Foreman还可以使用kickstart脚本为您创建、销毁和构建虚拟机,以及与云提供商一起使用,或者在您的虚拟化堆栈中(如果您在内部执行此操作)。

以上是两种常见的解决方案,您可以根据您的需求和环境选择最适合您的方法。

总结

通过使用二进制仓库管理器(BRM)或结合Foreman/Katello和Ansible插件,您可以实现更轻松和可维护的软件管理,而不需要频繁更改Ansible Playbooks。选择适合您环境的方案,并始终确保在执行任何操作之前做好适当的备份和版本管理。

正文完