只是让我的双脚与木偶湿(到目前为止只是阅读),并希望有一些样品(现实生活)清单/食谱,build立一个典型的Web服务器,如Apache / MySQL / PHP等,以及基本的服务器硬化Ubuntu的)
使用木偶,最好记住的是尝试为您的所有清单创build模块,以便将代码轻松地重用于多个服务器和环境。
还可以使用SVN或GIT这种方式,您可以轻松地跟踪给定应用程序所需的更改和签出configuration文件。 正如kashani所说, 伪造伪造和Example42都是一些很好的参考。
以下是我为Web服务器创build的示例清单。 这将使您可以select安装/卸载Web服务器,如果需要的话。 你会注意到它使用事实的事实来检查OS和体系结构来安装正确的RPMS(Centos)。 虽然你可以很容易地把它作为模板,并使用正确的包名称扩展到Ubuntu。
class apache ($disable = "false", $apacheconf = "default") { if $disable == "false" { $installed = present $enable = true $ensure = "running" } else { $installed = absent $enable = false $ensure = "stopped" } case $operatingsystem { 'CentOS', 'RedHat': { if $architecture == "x86_64" { package { 'httpd': name => "httpd.x86_64", ensure => $installed, } } else { package { 'httpd': name => "httpd.i386", ensure => $installed, } } service { 'httpd': ensure => $ensure, enable => $enable, } file { "http.conf": path => "/etc/httpd/conf/httpd.conf", owner => root, group => root, mode => 0644, source => $apacheconf ? { 'default' => "puppet:///modules/apache/httpd.conf", } } } } }
要向基本清单添加额外的function,您只需从另一个清单中调用它。 如安装和SSL http服务器。 下面的代码,你会看到–include apache–用来调用上面的清单,然后安装aditional选项。
class apache::ssl ($disable = "false") { include apache if $disable == "false" { $installed = present $enable = true $ensure = "running" } else { $installed = absent $enable = false $ensure = "stopped" } case $operatingsystem { 'CentOS', 'RedHat': { case $architecture { 'x86_64': { package { 'mod_ssl': name => "mod_ssl.x86_64", ensure => $installed, require => Package['httpd'], } } 'i386':{ package { 'mod_ssl': name => "mod_ssl.i386", ensure => $installed, require => Package['httpd'], } } } } } }
不幸的是,这样的事情并不存在。 使用Puppet有点像开发Web应用程序之前有框架。 你会写很多脚手架代码..至less这是我迄今为止的经验。 Puppet Module Forge非常受欢迎,我对这里的大部分模块都不甚了解。
我会build议看看Example42试图创build一个连贯的系统。 我使用了许多模块来引导我最新的Puppet安装。因为它基于RHEL / CentOS,所以需要修改相当多的代码,不过他使用了一个params类来支持其他发行版非常简单。
你可以有这样的事情。 确切的软件包名称取决于您使用的操作系统。 将以下内容放在/etc/puppet/modules/webserver/manifests/init.pp中:
class webserver { package { apache2: ensure => installed; } package { php5: ensure => installed; } package { mysql-server ensure => installed; } }
然后在你的/etc/puppet/site/nodes.pp文件里加上:
node default { include webserver; }