http://forge.puppetlabs.com/treydock/yum_cron  【puppet功能扩展forge】

http://docs.puppetlabs.com/references/latest/type  【puppet 资源类型】

Every resource has a type, a title, and a set of attributes:

general form of a resource declaration is:

    The resource type, in lower-case
    An opening curly brace
    The title, which is a string
    A colon
    Optionally, any number of attribute and value pairs, each of which consists of:
        An attribute name, which is a bare word
        A => (arrow, fat comma, or hash rocket)
        A value, which can be any data type, depending on what the attribute requires
        A trailing comma (note that the comma is optional after the final attribute/value pair)
    Optionally, a semicolon, followed by another title, colon, and attribute block
    A closing curly brace


core of the Puppet language is declaring resources;

Groups of resources can be organized into classes;

catalog will be in memory as a Ruby object, transmitted as JSON, and persisted to disk as YAML;


case $operatingsystem {
centos, redhat: { $service_name = 'ntpd' }
debian, ubuntu: { $service_name = 'ntp' }
}

package { 'ntp':
ensure => installed,
}

service { 'ntp':
name => $service_name,
ensure => running,
enable => true,
subscribe => File['ntp.conf'],
}

file { 'ntp.conf':
path => '/etc/ntp.conf',
ensure => file,
require => Package['ntp'],
source => "puppet:///modules/ntp/ntp.conf",
# This source file would be located on the puppet master at
# /etc/puppetlabs/puppet/modules/ntp/files/ntp.conf (in Puppet Enterprise)
# or
# /etc/puppet/modules/ntp/files/ntp.conf (in open source Puppet)
}