3

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

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

我们的工作流程是让我们每个人都在本地主分支上开发,当我们准备好测试时,我们提交,然后推送,发布后挂钩更新开发环境。然后,我们可以使用puppetd --test --environment development. 如果一切都按预期工作,那么我们中的任何一个都可以将开发分支合并到生产中并推送它再次更新生产环境。

问题

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

任何建议将不胜感激。

4

2 回答 2

1

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

我理想的工作流程如下所示:

  • 本地
    • 创建功能分支 feature/add-nfs-mount
    • 添加对模块/hiera/puppet labs 的修改
    • 添加与修改相关的 rspec 测试(理想情况下使用您的生产层次数据并验证配置/文件实际上包含预期值)
    • 运行 rspec-puppet
    • 通过 vagrant provisioning 进行测试
    • 推送功能分支
  • 詹金斯
    • ci 检测到推送,启动我的测试lint,......
    • 要求您的同事通过拉取请求审查您的更改
  • 一旦合并 ci 开始构建管道
    • 再次启动测试
    • 升级到登台(在开发中合并功能分支)
    • 让傀儡提供分期
    • 手动/自动检查暂存平台的所需状态
    • 我们有一个手动步骤来推广到生产(合并开发在主)

希望这有帮助

斯蒂芬

于 2013-12-18T10:17:40.917 回答
1

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

将 VCS 用于 puppet 与使用代码有点不同。有时你的推送“可能会破坏构建”,可以这么说。因此,请使用 Git 标签来描述一切正常的提交,这将帮助您确保不会恢复到“坏”提交之一。

于 2012-08-22T14:41:02.693 回答