zoukankan      html  css  js  c++  java
  • 如何做好Puppet Modules管理

    如何做好Puppet Modules管理

    不同于其他的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环境可以随时修复代码并且灵活切换
  • 相关阅读:
    bzoj 3744: Gty的妹子序列 主席树+分块
    bzoj 3110: [Zjoi2013]K大数查询 树状数组套线段树
    bzoj 3041: 水叮当的舞步 迭代加深搜索 && NOIP RP++
    约瑟夫问题例题小结
    bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化
    人生第一场CTF的解题报告(部分)
    ZOJ 3811 Untrusted Patrol【并查集】
    POJ 2112: Optimal Milking【二分,网络流】
    Codeforces Round #277 (Div. 2 Only)
    POJ 2195 Going Home【最小费用流 二分图最优匹配】
  • 原文地址:https://www.cnblogs.com/yuxc/p/6819937.html
Copyright © 2011-2022 走看看