使用gitpipe理puppet模块

我有一个在Debian 7上运行的puppet / foreman服务器来pipe理我的系统。 我使用社区版本3.7的木偶和领class1.6.0。 我使用目录环境。

目前我使用一个相当复杂的工作stream程来创build我的自我编写的模块,在我的开发环境中进行颠覆控制,然后将它们导出到外部目录,构build一个puppet模块(puppet module build …)和在生产中安装。 我认为将它们分支/标记为颠覆性的生产,但是由于我记不起来的原因,我认为这是出乎意料的。

同时我学到了一些git,宁愿用git代替颠覆。 我的问题是现在是否有最好的做法呢? 我可以想象至less有两种方法都有其优缺点。 一个是将版本控制下的环境开发,然后克隆/分支到生产。 其次是将每个模块的git repo克隆到环境中。

正如我所说,我是新手,所以我没有真正的线索,它的优点和缺点。 另外,我只用了约8个月的木偶和工头。

干杯,克里斯托弗

答案真的取决于你想要的版本控制。 有几个主要的方法:

  1. 把所有东西都放在一个单一的Git仓库中,然后把它复制到你的主人(或者如果你正在运行无主的节点上)。

    这是迄今为止最简单的select,但意味着您将在生产和开发环境中拥有相同模块的多个副本(尽pipe您可以使用符号链接来解决这个问题)。


  1. 把你的主木偶代码放到一个Git仓库中,Git子模块指向你的自定义模块。 部署与上面相同,增加了对git clone--recursive

    这种方法的优点是你可以很容易地引用外部模块(例如PuppetLabs Apach e模块),并且相对容易地引入上游的变化,但是你也有必须处理Git子模块的开销,这些子模块是杂乱无章的。


  1. 运行你自己的Puppet Forge,并使用Librarian-puppet或者R10K来pipe理你的模块的安装。

    这样做的好处是能够通过SemVer完全控制你的模块的版本而无需公开发布它们 – 尽pipe你自己的Puppet Forge仍然被一些人认为是“ 先锋 ”。