与我共事的一些人实际上为每个 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 当时还不支持角色和配置文件,因此使用环境功能进行各种技巧是一种常见的做法。