在 Puppet 中,在不同的 Puppet 环境中使用不同的 Puppet 模块的可接受方式是什么?

在 Puppet 中,在不同的 Puppet 环境中使用不同的 Puppet 模块的可接受方式是什么?

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

相关内容