Puppet Declarative config management
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
puppet parser validate <file.pp>
puppet apply --noop <file.pp>
puppet apply <file.pp>
puppet agent -tpuppet resource <type> <name>
facter <fact>
puppet lookup <key>
puppet module install <name>
Concepts
- Facts facter on the node
- Catalog compiled from manifests + Hiera
- Agent compares to real state
- Report changes and failures
Apply and agent
puppet apply <file.pp>
puppet apply --noop <file.pp>
puppet apply -e '<code>'
puppet apply --test <file.pp>
puppet apply --detailed-exitcodes <file.pp>
puppet apply --modulepath <dir> <file.pp>
puppet apply --tags <tag> <file.pp>
puppet apply --debug <file.pp>
puppet apply --catalog <file.json>
puppet agent -tpuppet agent -t --noop
puppet agent --onetime --no-daemonize
puppet agent -t --environment <env>
puppet agent --server <host> -t
puppet agent --disable "<reason>"
puppet agent --enable
Inspect and change
puppet resource <type>
puppet resource <type> <name>
puppet resource <type> <name>
<attr>=<value>
puppet resource service <name> ensure=running
puppet resource package <name> ensure=present
puppet resource --types
puppet describe <type>
puppet describe <type> -s
puppet help <subcommand>
puppet --version
Facts and config
facterfacter <fact>
facter --jsonfacter -pfacter <fact> --debug
puppet factspuppet config print
puppet config print <setting>
puppet config set <setting> <value>
Hiera and lookup
puppet lookup <key>
puppet lookup <key> --explain
puppet lookup <key> --node <node>
puppet lookup <key> --facts <file.yaml>
puppet lookup <key> --merge deep
puppet lookup <key> --default <value>
Modules
puppet module install <author-name>
puppet module install <author-name> --version
<ver>
puppet module list
puppet module list --tree
puppet module upgrade <author-name>
puppet module uninstall <author-name>
puppet module install <name> --target-dir
<dir>
puppet config print modulepath
Check and lint
puppet parser validate <file.pp>
puppet parser validate
puppet-lint <file.pp>
puppet-lint --fix <file.pp>
puppet-lint --fail-on-warnings <path>
puppet-lint --no-<check>-check <path>
Manifest syntax
package { 'nginx': ensure => installed,}
service { 'nginx': ensure => running, enable => true,}file { '/etc/motd': ensure => file, content => "Managed by Puppet\n",}
class web ( String $port = '80',) { package { 'nginx': ensure => installed }}include web
package { 'nginx': ensure => installed }-> service { 'nginx': ensure => running }# or: require => Package['nginx']
file { '/etc/nginx/nginx.conf': source => 'puppet:///modules/web/nginx.conf', notify => Service['nginx'],}
if $facts['os']['family'] == 'Debian' { $pkg = 'apache2'} else { $pkg = 'httpd'}
exec { 'reload-units': command => '/bin/systemctl daemon-reload', refreshonly => true,}
file { '/etc/app.conf': content => epp('app/app.conf.epp', { 'port' => 8080 }),}
['git', 'curl'].each |$p| { package { $p: ensure => installed }}
Recipes
puppet parser validate site.pppuppet-lint site.pppuppet apply --noop site.pppuppet apply site.pp
puppet agent -t --noop# review, thenpuppet agent -t
puppet lookup web::port --node web01 --explainpuppet lookup web::port --facts test.yaml --explain
puppet module install puppetlabs-stdlib --target-dir ./modulespuppet apply --modulepath ./modules -e 'include stdlib'



