再次声明 用puppet的管理服务器的童鞋们。 部署puppet并不困难。 如何用好puppet是对puppet语法掌握程度。 下面贴一个用puppet管理 httpd的实例,希望对puppet初学者有帮助

class httpd
{
        define init ($user = "apache", $group = "apache", $file="/etc/httpd/conf/httpd.conf")
        {
                $packagelist = ["httpd","httpd-tools"]
                package {
                        $packagelist:
                        ensure => present,
                }

                group { $group: ensure => present, require => Package["httpd"]}

                user  { $user: ensure => present, home => "/var/www",
                        managehome => false, membership => minimum, groups => ["$group"],
                        shell => "/sbin/nologin", require => Package["httpd"],
                }

      file {
        "httpd.conf":
        name => $file,
        owner => root, group => root, mode => 644,
        checksum => md5,
        content => template("httpd/httpd.conf.erb"),
        notify  => Exec["reload"];

        "/etc/httpd/conf.d":
        ensure  => directory, checksum => mtime,
        mode    => 0644, owner => root, group => root,
        notify  => Exec["reload"],
        ignore  => [".svn",".ignore"],
        require => Package["httpd"];
                }

                service {
                        "httpd":
                        ensure => running,
                        enable => true,
                        hasrestart => true,
                        hasstatus => true,
                        start => "/etc/init.d/httpd start",
                        require => Package["httpd"],
                }

       exec { "reload":
        command => "/etc/init.d/httpd reload",
        onlyif => "/usr/sbin/apachectl -t",
                require => Service["httpd"],
        refreshonly => true,
      }
        }


    define vhost ( $admin = "webmaster", $aliases = '', $docroot, $ensure = 'present', $domain = "")
    {
        file { "/etc/httpd/conf.d/$name.conf":
            mode => "644",
            ensure => $ensure,
            require => Package["httpd"],
            notify => Exec["reload-apache2"],
            content => template("httpd/vhost.conf.erb"),
        }
    }
}