我认为其他人已经介绍了原因,因此我将介绍方法。我认为通过了解某人如何使用Puppet来完成您想要的事情,可以使决策更加清晰。
先做基本案例
默认情况下,您的Apache Puppet模块不会做太多事情。安装Apache,将其配置为最低标准,然后启动服务。在您需要支持的所有发行版上进行此项工作。
其次增加灵活性
我们需要添加虚拟主机。您最终将获得一个系统,该系统可以根据需要删除文件或将其从一组conf.d或vhosts.d /目录中删除。启用或配置模块也是一样。
使用角色或主机组类将构建模块捆绑在一起
我认为使用Puppet的最佳方法是确保它是可添加的。使用上面的示例,我们应该有一个模块
- 安装Apache
- 设置基本配置
- 将虚拟主机添加到Apache
- 配置任何其他设置
- 启动Apache
与其重载我们的默认Apache模块以完全执行特定主机或组所需的工作,不如处理角色或主机组类。
class role::web_cust1 {
include apache
apache::vhost {'www.domain.com': }
apache::vhost {'www.domain2.com': priority => '99', }
include php
include php-fpm
include mysql
}
再次添加。
把特殊情况放在希拉
我非常喜欢让Puppet的Hiera(将其视为Puppet的数据库)来存储特殊位。如果某个主机或主机组需要特殊设置,请先将合理的默认设置放入模块中,以便普通用户无需了解该默认设置。然后为那些特殊主机或主机组插入数据,以便Hiera可以使用它,并根据需要将其传递给Puppet。
我的用例是监听端口。某些服务器前面有清漆或透明胶。默认情况下,Puppet模块的Apache使用端口80,但是如果Hiera找到数据,它将覆盖该默认值。