【发布时间】:2017-12-08 07:48:56
【问题描述】:
我正在尝试制定一种在本地开发傀儡角色和个人资料的策略。理想情况下,我想要一个自包含的 git 存储库,其中包含支持 master 所需的一切以及可以应用和验证正在开发的角色的测试节点。
我目前的解决方案是使用 docker-compose 到launch a local puppet master。这会将我的开发机器上的本地代码文件夹映射到主容器上的 /etc/puppet/code 卷。对于测试节点部分,我想我可以将 vagrant 与 puppet 供应商一起使用。我选择 vagrant(而不是只运行 docker 代理映像)的原因是我的一些角色适用于 windows 机器。这似乎是同时支持 windows 和 linux puppet 角色的最佳选择。
我目前的挣扎是弄清楚如何桥接两个虚拟网络(从 docker 到 vagrant)。我可以通过将 puppet master 端口 (8140) 导出到主机然后将我的 vagrant provisioner 指向主机来伪装它。这种方法的问题是我必须使用分配给流浪客人(对应于主机)的网关 IP,而且我不确定解决方案在我的团队中是否会稳定。
我正在寻找关于...的建议
- 这看起来是一种可行/正确的方法来实现我的目标吗?
- 如何干净利落地结合这两种解决方案(docker + vagrant)
- 我是否错过了一些已经解决此问题的现有标准做法?
这里是the github repo,我目前的工作。如有任何建议,请随时提交 PR。
【问题讨论】:
-
为什么要在这种情况下使用 Docker?另外,为什么不使用 RSpec 和 Beaker / Test Kitchen / Serverspec 为角色和模块编写测试呢?这些库已经存在,可以帮助本地开发 Puppet 模块并在 VM 中测试它们。对于 Serverspec,如果您想在容器而不是 VM 中运行测试,则可以使用 Docker 提供程序。
-
这不仅仅是单元测试。我一般都在为 puppet 接受 CI/CD 模型而苦苦挣扎。我们的商店目前在绑定到单个 git 存储库的单个 puppet master 上进行 puppet 开发。 git repo 中有一些分支映射到 master 上的环境,但它们仍在部署到我们的“生产”master。不喜欢,感觉不对。我想像对待应用程序一样对待我的 puppet 开发。在将其投入生产之前,将其部署到单独的环境中进行验证。单元测试绝对是其中的一部分,但不是整个解决方案。
-
好的,您的问题目前的形式相当广泛。可能有很多方法可以回答这个问题。您可能会尝试澄清并可能集中在您正在努力解决的特定问题上。
标签: docker vagrant puppet devops