转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79113187

Puppet(https://puppet.com/)是一个IT自动化框架,用来帮助管理员管理大规模的网络设施资源,使用灵活的、声明式的实现方式来进行IT自动化管理。

Puppet的核心是mainfest的概念,它描述了一个设施资源对预期的声明(state)。在Puppet中,声明包括了以下方面:

1)安装了哪些软件包。

2)运行着哪些服务,不运行哪些服务。

3)软件配置详情。

Puppet使用了基于Ruby的DSL(Domain Specific Language)在一组mainfest文件中来描述系统配置。例如:描述Zookeeper的Puppet mainfest文件如下:

package { 'zookeeper':
	ensure => "3.4.9 *",
}

package { 'zookeeperd':
	ensure => "3.4.9*",
	require => Package["zookeeper"],
}

service {'zookeeperd':
	ensure => 'running',
	require => Package["zookeeperd"],
}
这个最简单的mainfest例子表明Zookeeper作为一个服务已经安装在机器上,并且服务是运行的。第一个package代码块告诉Puppet使用操作系统的包管理程序(例如: Ubuntu/debian的apt-get。Red Hat/CentOS的yum等)来安装3.4.9的Zookeeper软件包。第二个package代码块保证zookeeperd软件包已经安装。最后service代码块告诉Puppet需要保证zookeeperd的系统服务正在运行,这个服务依赖于zookeeperd软件包已经安装。

接下来,我们安装Puppet使用前面这个例子来安装和启动zookeeperd服务。

为了获取最新版的Puppet,需要将apt-get/yum配置使用Puppet实验室的软件源。执行下述命令来安装最新版的Puppet:

wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
dpkg -i puppetlabs-release-precise.deb
apt-get/yum update
保存前面列出的实例mainfest文件,命名为init.pp。使用Puppet来应用这个mainfest:

puppet apply init.pp
命令执行完毕,查看zookeeper服务是否正在运行

service zookeeper status
这时。我们手动停止Zookeeper服务并且重新运行puppet apply命令,Puppet不会重复执行安装过程,但是会重启服务,因为在mainfest文件中定义的声明中,服务是运行的。