返回介绍

模块管理

发布于 2025-02-18 00:20:49 字数 2640 浏览 0 评论 0 收藏 0

不同于其他的 Openstack 项目,puppet modules 是一个数量庞大的存在。以我们当前在使用中的 puppet modules 为例,就已经多达 96 个(破百计日可待)。

依赖管理

目前有三种管理依赖的方式:

我们分别就这三种方式依次介绍一下,我们这里不说哪种方法最好,但我们会说明我们根据什么原因最终选择了哪种方法。

1.Puppet module tool

该方法使用 metadata.json 文件来管理每个 module 之间的依赖关系,以 puppet-nova 为例:

 "dependencies": [
    { "name": "puppetlabs/apache", "version_requirement": ">=1.0.0 <2.0.0" },
    { "name": "duritong/sysctl", "version_requirement": ">=0.0.1 <1.0.0" },
    { "name": "openstack/cinder", "version_requirement": ">=8.0.0 <9.0.0" },
    { "name": "openstack/glance", "version_requirement": ">=8.0.0 <9.0.0" },
    { "name": "puppetlabs/inifile", "version_requirement": ">=1.0.0 <2.0.0" },
    { "name": "openstack/keystone", "version_requirement": ">=8.0.0 <9.0.0" },
    { "name": "puppetlabs/rabbitmq", "version_requirement": ">=2.0.2 <6.0.0" },
    { "name": "puppetlabs/stdlib", "version_requirement": ">=4.0.0 <5.0.0" },
    { "name": "openstack/openstacklib", "version_requirement": ">=8.0.0 <9.0.0" },
    { "name": "openstack/oslo", "version_requirement": "<9.0.0" }
  ]

2.Librarian-puppet

librarian-puppet 支持从 Modulefile 或者 metadata.json 读取依赖,或者使用独立的 Puppetfile。例如,社区的 puppet-openstack_integration 项目里就包含了 Puppetfile:

## OpenStack modules
mod 'aodh',
  :git => 'https://git.openstack.org/openstack/puppet-aodh',
  :ref => 'master'

mod 'barbican',
  :git => 'https://git.openstack.org/openstack/puppet-barbican',
  :ref => 'master'
  ...

可以使用以下命令安装其所依赖的 module:

  librarian-puppet install --verbose

3.git submodule

git submodule 可以同时管理多个独立的项目,同时保持提交的独立。这也是目前我们所选择的方式。 我们根据 Puppet Module 的类型将其划分成了三个项目(你可以理解为 modules 的 group):

  • sunfire 内部自研服务模块
  • storm Openstack 服务相关模块
  • karma 运维系统相关模块

我们会为 storm 创建多个分支,例如:liberty,mitaka。在 dev 和 test 环境会使用 git 命令来切换代码,而在生产环境则会使用 RPM 包的方式来管理。这样做的好处是:

  • 遵循线上代码统一使用软件包管理的方式
  • dev 和 test 环境可以随时修复代码并且灵活切换

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文