使用Vagrant + Docker在本地开发Puppet

时间:2017-07-04 19:09:14

标签: docker vagrant puppet devops

我试图想出一个在本地开发木偶角色和档案的策略。理想情况下,我想要一个自包含的git仓库,它拥有站起来的所有东西以及可以应用和验证开发中的角色的测试节点。

我目前的解决方案是使用docker-compose到launch a local puppet master。这会将我的开发机器上的本地代码文件夹映射到主容器上的/ etc / puppet / code卷。对于测试节点,第一部分我认为我可以使用流浪汉配置器。我选择vagrant的原因(而不仅仅是运行docker代理图像的原因是我的一些角色适用于windows机器。这似乎是支持windows和linux puppet角色的最佳选择。

我目前的斗争是弄清楚如何桥接两个虚拟网络(流浪者到码头工人)。我可以通过将木偶主端口(8140)导出到主机然后将我的流浪者配置器指向主机来伪装它。这种方法的问题在于我必须使用分配给流浪客人的网关IP(对应于主机),而且我不相信解决方案会在我的团队中保持稳定。

我正在寻找关于......的建议。

  • 这似乎是实现目标的可行/正确方法吗?
  • 我怎样才能干净地结合这两种解决方案(docker + vagrant)
  • 我错过了一些已经解决了这个问题的现有标准做法吗?

到目前为止我的工作是the github repo。如有任何建议,请随时提交PR。

1 个答案:

答案 0 :(得分:1)

您正在考虑的 是可行的解决方案。有很多方法可以完成此操作,但是由于您在询问其他方法,因此我直接使用puppet apply和Docker完成了此操作。我写了一篇关于here的旧Wiki帖子,当时我正在使用Puppet 4,所以它仍然很实用。

基本上,您要做的是制作一个独立的测试库​​,运行r10k,然后将其安装到临时计算机中。

  • 进行研讨会回购(我提供了sample
  • 给它一个基础分支(我选择production是因为这是已知的 木偶默认)。
  • 建立一个新分支以将您的角色和配置文件提交到该模块以进行测试。
  • 调整default中的site.pp目标以包括该角色。
  • 运行r10k deploy environment -pv,并将r10k.yaml设置为该工作坊仓库。
    • 为什么?这样,您可以确保 Puppetfile被拉扯,您的工作坊看起来几乎与任何地方都近 您要使用的测试环境。
  • 使用Puppet工具箱拉Docker容器
    • 我做了一个旧的,Puppetlabs维护着一个正式的,你可以自己制作,没关系
  • 将展开的目录绑定到其中,并给其puppet apply /etc/puppet/code/environments/[branch]/manifests/site.pp并查看会发生什么。

因为您对使用Vagrant感兴趣,您可能只需让Vagrant映像执行r10k deploy并运行Docker命令即可。这样可以为您提供完整的按钮设置。

如前所述,有很多方法可以做到这一点,但这是过去为我服务的方法。有时,以交互方式查看这些内容比围绕Beaker / Kitchen / serverspec进行编码要容易得多。