![在 Puppet 中,在不同的 Puppet 环境中使用不同的 Puppet 模块的可接受方式是什么?](https://linux22.com/image/672111/%E5%9C%A8%20Puppet%20%E4%B8%AD%EF%BC%8C%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%20Puppet%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%20Puppet%20%E6%A8%A1%E5%9D%97%E7%9A%84%E5%8F%AF%E6%8E%A5%E5%8F%97%E6%96%B9%E5%BC%8F%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
与我共事的一些人实际上为每个 Puppet 环境赋予了其自己的环境$modulepath
,但同时也具有共同点$modulepath
。
请参阅下面的示例:
[redis]
modulepath = /usr/share/puppet/modules:/etc/puppet/modules:/etc/puppet/environments/redis/modules/
manifest=/etc/puppet/environments/redis/manifests/site.pp
我不确定这是否明智,但我想问,“这样做的正确方法是什么?”
我愿意从 Puppet 的角度以及一般配置管理的角度来回答问题。
这实际上非常具体。如果我需要在一个环境中使用 Redis 模块,在另一个环境中使用 statsd 模块,并且所有环境都需要使用 Apache 模块,我可以通过设置模块路径来处理这个问题吗?我应该这样做吗?
答案1
首先,这不是 Puppet 中环境的预期用途。所以是的,我首先认为这是一种不好的做法。您的环境是“开发”、“测试”、“生产”等。
你可能想要使用Puppet 角色和配置文件和R10K。
我还可以向您解释为什么我认为这样做了(我过去也做过类似的事情):如果这个代码/设置是在足够长的时间之前编写的,那么 Puppet 当时还不支持角色和配置文件,因此使用环境功能进行各种技巧是一种常见的做法。