转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79113359
使用独立的Puppet mainfest文件很容易定义资源的声明,但这种实现方法在需要管理的资源增多时变得越来越不方面。其实,Puppet有类和模块的概念,可以用来更好的组织和隔离特定的配置详情。
考虑到Storm的场景,我们又多个节点的类。举例来说,一个Storm集群会有nimbus节点,supervisor节点或者同时兼具两种服务的节点。Puppet类和模块提供了一种区分不同配置角色的方法,可以混合搭配来方面的定义具有多种角色的资源。
比如,我们将《Storm之——自动化集群配置工具Puppet》一文中安装Zookeeper包的mainfest文件,重新定义为一个类,这样包含多个类的mainfest文件就可以引用这个类:
class zookeeper {
include 'jdk'
package { 'zookeeper':
ensure => "3.4.9 *",
}
package { 'zookeeperd':
ensure => "3.4.9*",
require => Package["zookeeper"],
}
service {'zookeeperd':
ensure => 'running',
require => Package["zookeeperd"],
}
}
这里,我们将Zookeeper的mainfest文件重新定义为puppet的类。这个类可以在其他类或mainfest文件中使用。第二行中,zookeeper类包含了另外一个类,jdk,引用这个类的定义,表示它声明一个机器必须具备Java JDK。