====== Client side ===== First apt install puppet You can choose how to reach the server by configuring it or using dns, which is a great advantage if you have all the servers in one domain. ==== Config way ==== puppet config set server puppet.starlab.cz ==== DNS way ==== - make sure you have properly setup hostname in /etc/hostname and /etc/hosts - add puppet to your /etc/hosts 10.0.4.60 puppet puppet.starlab.cz or 212.20.102.91 puppet puppet.starlab.cz - initiate connection to server xen-starlab:~# puppetd --server puppet --test info: Creating a new SSL key for xen.starlab.cz info: Caching certificate for ca info: Creating a new SSL certificate request for xen.starlab.cz info: Certificate Request fingerprint (md5): AA:A6:EA:69:9A:35:91:C2:EA:8B:CF:B4:70:8E:2E:4B Exiting; no certificate found and waitforcert is disabled v novejsi verzi puppetu: xen-starlab:~# puppet agent --server puppet --test ====== server side ====== The service seems to be running properly netstat's output - port 8140 tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 22428/ruby1.8 Hey! We have a new client root@ibm:~# puppet cert --list "xen.starlab.cz" (AA:A6:EA:69:9A:35:91:C2:EA:8B:CF:B4:70:8E:2E:4B) So sign it! puppet cert --sign xen.starlab.cz notice: Signed certificate request for xen.starlab.cz notice: Removing file Puppet::SSL::CertificateRequest xen.starlab.cz at '/path/to.pem' ====== Client side again ===== puppetd --server puppet --waitforcert 80 --test **Warning** **--test** doesn't mean 'test', it is a short for: '' ´onetime´, ´verbose´, ´ignorecache´, ´no-daemonize´, ´no-usecacheonfailure´, ´detailed-exit-codes´, ´no-splay´, and ´show_diff´'' Here is the output: xen-starlab:~# puppetd --server puppet --waitforcert 80 --test info: Caching catalog for xen.starlab.cz info: Applying configuration version '1413471896' notice: /Stage[main]//File[nrpe_local.cfg]/content: --- /etc/nagios/nrpe_local.cfg 2013-03-09 08:53:33.000000000 +0100 +++ /tmp/puppet-file20141106-21693-vorhz2-0 2014-11-06 20:57:19.823561813 +0100 @@ -1,3 +1,10 @@ -###################################### -# Do any local nrpe configuration here -###################################### +command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 +command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 +command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 8% -c 4% +command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z +command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 +command[check_apt]=/usr/lib/nagios/plugins/check_apt +command[check_linux_raid]=/usr/lib/nagios/plugins/check_linux_raid +command[check_rdiff]=sudo /usr/lib/nagios/plugins/check_backup_storage +command[check_smart]=sudo /usr/lib/nagios/plugins/check_smart +command[check_ipmi]=/usr/lib/nagios/plugins/check_ipmi info: FileBucket adding {md5}19c1c67393a0b6002f4595b535c71cc2 info: /Stage[main]//File[nrpe_local.cfg]: Filebucketed /etc/nagios/nrpe_local.cfg to puppet with sum 19c1c67393a0b6002f4595b535c71cc2 notice: /Stage[main]//File[nrpe_local.cfg]/content: content changed '{md5}19c1c67393a0b6002f4595b535c71cc2' to '{md5}d8116d9a68b755368037d6bc08d3f1db' notice: Finished catalog run in 0.44 seconds Create a cron job puppet resource cron puppet-agent ensure=present user=root minute=30 command='/usr/bin/puppet agent --onetime --no-daemonize --splay' Output: notice: /Cron[puppet-agent]/ensure: created cron { 'puppet-agent': ensure => 'present', command => '/usr/bin/puppet agent --onetime --no-daemonize --splay', minute => ['30'], target => 'root', user => 'root', } and the cron line is not system wide, but root's server:~# crontab -l # HEADER: This file was autogenerated at Thu Nov 06 21:21:15 +0100 2014 by puppet. # HEADER: While it can still be managed manually, it is definitely not recommended. # HEADER: Note particularly that the comments starting with 'Puppet Name' should # HEADER: not be deleted, as doing so could cause duplicate cron jobs. # Puppet Name: puppet-agent 30 * * * * /usr/bin/puppet agent --onetime --no-daemonize --splay Why cron job instead of daemon? Cron job can sometimes perform better and use less memory. ===== Autostart ===== puppet agent --enable service puppet restart