Docs / Language: Visual Index

Language: Visual Index

This page is about an old version of Puppet. If you use the current version of Puppet or of Puppet Enterprise, see the current Puppet docs.

This page can help you find syntax elements when you can’t remember their names.

    file {'ntp.conf':
      path    => '/etc/ntp.conf',
      ensure  => file,
      content => template('ntp/ntp.conf'),
      owner   => root,
      mode    => 0644,
    }

↑ A resource declaration.

    package {'ntp':
      ensure => installed,
      before => File['ntp.conf'],
    }
    service {'ntpd':
      ensure    => running,
      subscribe => File['ntp.conf'],
    }

↑ Two resources using the before and subscribe relationship metaparameters (which accept resource references).

    Package['ntp'] -> File['ntp.conf'] ~> Service['ntpd']

Chaining arrows forming relationships between three resources, using resource references.

    $package_list = ['ntp', 'apache2', 'vim-nox', 'wget']

↑ A variable being assigned an array value.

    $myhash = { key => { subkey => 'b' }}

↑ A variable being assigned a hash value.

    ...
    content => "Managed by puppet master version ${serverversion}"

↑ A master-provided built-in variable being interpolated into a double-quoted string (with optional curly braces).

    class ntp {
      package {'ntp':
        ...
      }
      ...
    }

↑ A class definition, which makes a class avaliable for later use.

    include ntp
    require ntp
    class {'ntp':}

Declaring a class in three different ways: with the include function, with the require function, and with the resource-like syntax. Declaring a class causes the resources in it to be managed.

    define apache::vhost ($port, $docroot, $servername = $title, $vhost_name = '*') {
      include apache
      include apache::params
      $vhost_dir = $apache::params::vhost_dir
      file { "${vhost_dir}/${servername}.conf":
          content => template('apache/vhost-default.conf.erb'),
          owner   => 'www',
          group   => 'www',
          mode    => '644',
          require => Package['httpd'],
          notify  => Service['httpd'],
      }
    }

↑ A defined type, which makes a new resource type available. Note that the name of the type has two namespace segments.

    apache::vhost {'homepages':
      port    => 8081,
      docroot => '/var/www-testhost',
    }

↑ Declaring a defined resource (or “instance”) of the type defined above.

    Apache::Vhost['homepages']

↑ A resource reference to the defined resource declared above. Note that every namespace segment must be capitalized.

    node 'www1.example.com' {
      include common
      include apache
      include squid
    }

↑ A node definition.

    node /^www\d+$/ {
      include common
    }

↑ A regular expression node definition.

    import nodes/*.pp

↑ An import statement. Should be avoided in all but a few circumstances.

    # comment
    /* comment */

↑ Two comments.

    if $is_virtual == 'true' {
      warning( 'Tried to include class ntp on virtual machine; this node may be misclassified.' )
    }
    elsif $operatingsystem == 'Darwin' {
      warning( 'This NTP module does not yet work on our Mac laptops.' )
    else {
      include ntp
    }

↑ An if statement, whose conditions are expressions that use agent-provided facts.

    if $hostname =~ /^www(\d+)\./ {
      notify { "Welcome web server #$1": }
    }

↑ An if statement using a regular expression and the regex match operator.

    if 'www' in $hostname {
      ...
    }

↑ An if statement using an in expression

    case $operatingsystem {
      'Solaris':          { include role::solaris }
      'RedHat', 'CentOS': { include role::redhat  }
      /^(Debian|Ubuntu)$/:{ include role::debian  }
      default:            { include role::generic }
    }

↑ A case statement.

    $rootgroup = $osfamily ? {
        'Solaris'          => 'wheel',
        /(Darwin|FreeBSD)/ => 'wheel',
        default            => 'root',
    }

↑ A selector statement being used to set the value of the $rootgroup variable.

    User <| groups == 'admin' |>

↑ A resource collector, sometimes called the “spaceship operator.”

    Concat::Fragment <<| tag == "bacula-storage-dir-${bacula_director}" |>>

↑ An exported resource collector, which works with exported resources

    Exec {
      path        => '/usr/bin:/bin:/usr/sbin:/sbin',
      environment => 'RUBYLIB=/opt/puppet/lib/ruby/site_ruby/1.8/',
      logoutput   => true,
      timeout     => 180,
    }

↑ A resource default for resources of the exec type.

    Exec['update_migrations'] {
      environment => 'RUBYLIB=/usr/lib/ruby/site_ruby/1.8/',
    }

↑ A resource override, which will only work in an inherited class.

    Exec <| title == 'update_migrations' |> {
      environment => 'RUBYLIB=/usr/lib/ruby/site_ruby/1.8/',
    }

↑ A resource override using a collector, which will work anywhere. Dangerous, but very useful in rare cases.

    @user {'deploy':
      uid     => 2004,
      comment => 'Deployment User',
      group   => www-data,
      groups  => ["enterprise"],
      tag     => [deploy, web],
    }

↑ A virtual resource.

    @@nagios_service { "check_zfs${hostname}":
      use                 => 'generic-service',
      host_name           => "$fqdn",
      check_command       => 'check_nrpe_1arg!check_zfs',
      service_description => "check_zfs${hostname}",
      target              => '/etc/nagios3/conf.d/nagios_service.cfg',
      notify              => Service[$nagios::params::nagios_service],
    }

↑ An exported resource declaration.

↑ Back to top