Puppet Cheat Sheet
A lot of this is taken from Puppet 3 Beginner's Guide by John Arundel
Table of Contents
Check puppet version
puppet --version
file content manifest - site.pp
save in site.pp
file { '/tmp/dafile':
  content => "datext\n",
}file content manifest - node.pp - for multiple nodes
save in node.pp
node 'danodename' {  
  file { '/tmp/dafile':
    content => "datext\n",
  }
}Packages
save in node.pp
node 'danodename' {  
  package { 'nginx':
    ensure => installed,
  }
}specific version
package { 'nginx':
  ensure => '1.1.18-1ubuntu0.1',
}Removing packages
package { 'apache2.0-common':
  ensure => absent,
}Updating packages
package { 'puppet':
  ensure => latest,
}Modules
everything belonging to a particular module/application
save in modules/nginx/manifests/init.pp
class nginx {  
  package { 'nginx':
    ensure => installed,
  }
}
node 'danodename' {
  include nginx
}
Services
# Manage nginx webserver
  class nginx {
    package { 'apache2.2-common':
      ensure => absent,
  }
  #make sure apache uninstalled before nginx installed
  package { 'nginx':
    ensure => installed,
    require => Package['apache2.2-common'],
  }
  #make sure nginx installed before you try to run it
  service { 'nginx':
    ensure => running,
    require => Package['nginx'],
  }
}
Starting a service at boot time
service { 'nginx':
  ensure => running,
  enable => true, #false disables auto-startup
}
Services and Status command
if status command not supported
  (e.g. sudo service nginx status)
try hasstatus and/or pattern
  service { 'my-service':
  ensure => running,
  hasstatus => false, #look for it in ps status list
  pattern => 'ruby myservice.rb', #optional - svc name not accurate look for this
  status => 'grep running /var/lib/status.txt', #optional - return val 0 = running
}
Specifying how to start/stop/restart svc
service { 'ssh':
  ensure => running,
  restart => '/usr/sbin/service ssh reload', #attribute could be start or stop also
}
Deploying file via puppet dir
put in modules/nginx/manifests/init.pp
class nginx {
  package { 'nginx':
    ensure => installed,
  }
  service { 'nginx':
    ensure => running,
    require => Package['nginx'],
  }
  file { '/etc/nginx/sites-enabled/default':
      #copy to the above path
    source => 'puppet:///modules/nginx/dafile.conf',
      #copy the above file from modules/nginx/file/dafile.conf
    notify => Service['nginx'],
      #tell nginx to restart
  }
}Setting up a Puppet master
https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure
Install NTP
sudo ntpdate pool.ntp.org
sudo apt-get update && sudo apt-get -y install ntp
sudo vi /etc/ntp.conf
	server 0.us.pool.ntp.org
	server 1.us.pool.ntp.org
	server 2.us.pool.ntp.org
	server 3.us.pool.ntp.org
sudo service ntp restart
Install Puppet Master
http://www.unixmen.com/install-puppet-server-centos-7/
rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-11.noarch.rpm
yum install -y puppet-server
systemctl start  puppetmaster.service
# Set Puppet Master to run on startup
puppet resource service puppetmaster ensure=running enable=true
Download apache (or other web server) and necessary dependencies
yum install -y httpd httpd-devel mod_ssl ruby-devel rubygems gcc-c++ curl-devel zlib-devel make automake  openssl-devel
Install Rack/Passenger
gem install rack passenger
#If you get errors on ruby version:
curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm install 2.2
rvm use 2.2 --default
passenger-install-apache2-module
passenger-install-apache2-module
Default directories
#/bin/bash
export PUPPETMANIFESTS=/etc/puppet/manifests
export MODULEPATH=/etc/puppet/modules