Git工作流使用Puppet& Hiera

时间:2012-08-22 14:32:22

标签: git puppet

我们是一个2人团队,使用puppet / Hiera来管理20台服务器。到目前为止,我们在开发清单时没有使用任何VCS。

我在puppetmaster上配置了一个远程Git仓库,并将我们的清单和模块文件夹推送到主分支(用于开发)并推送了一个相同的生产分支。远程仓库有post-release hook,它根据分支名称(或更新,如果存在)配置新环境,并且puppetmaster具有动态环境,配置为使其能够工作。 puppet blog详细讨论了此配置。

我们的工作流程是让我们每个人在我们的本地主分支上开发,当我们准备好测试时,我们提交,然后推送,并且post-release hook更新开发环境。然后,我们可以使用puppetd --test --environment development测试(我们认为我们不需要单独的登台环境)测试客户端上的更改。如果一切按预期工作,那么我们任何一方都可以将开发分支合并到生产中并推送再次更新生产环境。

问题

  1. 这是使用Git和Puppet的最佳工作流程吗?
  2. 我们如何实际测试开发环境。我们有可以使用的备用服务器但我们是否使用与节点声明中指定的生产服务器相同的主机名配置它们?如果我们这样做,那么来自Hiera的一些节点特定数据(例如IP地址)将是错误的。或者我们使用--environment development switch在生产服务器上进行测试并使用--noop?
  3. 任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可能想要做的一件事是使用暂存VM。在推送更改之前,如果一切正常,请在VM上测试它们,然后推送更改。

对于puppet使用VCS与使用代码的VCS有所不同。有时你的推动“可能会破坏构建”,可以这么说。因此,使用Git标记来描述一切正常的提交,这将帮助您确保不会恢复到其中一个“错误”提交。

答案 1 :(得分:1)

我假设您有一个jenkins服务器配置来轮询您的git存储库

我理想的工作流程如下:

  • 本地
    • 创建功能分支功能/ add-nfs-mount
    • 添加对modules / hiera / puppet labs的修改
    • 添加与修改相关的rspec测试(理想情况下使用您的生产层数据并验证配置/文件实际包含预期值)
    • 运行rspec-puppet
    • 通过流浪汉配置进行测试
    • 推送功能分支
  • 詹金斯
    • ci检测推送,启动my testlint,...
    • 要求您的同事通过提款请求审核您的更改
  • 一旦合并ci就开始构建pipeline
    • 再次启动测试
    • 促进升级(在开发中合并功能分支)
    • 让木偶提供暂存
    • 手动/自动检查暂存平台的所需状态
    • 我们有一个手动步骤,以促进生产(合并开发在主人)

希望这个帮助

斯蒂芬