我们使用 git + puppet 来开发我们的puppet代码并将它们部署到我们的服务器节点。
技术图(包括一些中文,但很少)是: here
包源列表,dns服务器和系统相关文件等常见配置正在编码到用pkgmgr,networkmgr和sysenv命名的puppet模块中。他们正在不同分支中开发,测试和发布,然后推送到/ modules / env(分支) / puppet主节点上的公共目录。另一方面,我们有许多项目都有自己的配置,包括或声明通用模块,编码到以项目名称命名的模块,然后以相同的方式复制到modules / env(branch)/ projects。
作为木偶代理的每个项目中的服务器可以设置特定的木偶环境,如生产,测试。例如,当选择生产环境时,来自/ modules / production / common和/ modules / production /中定义的模块的资源将部署项目/ project_A。
公共模块由另一个公寓维护,任何合并到master分支的更新都会影响生产环境中的项目服务器。有什么方法可以满足:
1我们的一些项目服务器在脱机之前不再需要任何更新
2对常见模块的任何更改都会生成带标记的快照,如版本,可以由我们的项目积极选择
我知道很难像其他离线软件那样在版本中发布puppet模块,但是还能以优雅的方式满足这两个要求吗?
答案 0 :(得分:1)
许多团队对软件的发布管理非常棘手。
如果每个模块可以使用一个存储库,我的建议是不要使用相同的存储库(尽管这会引入相当多的开销)。相反,你可以使用多个git存储库并供应你的公司" common"模块使用说librarian-puppet。