Puppet-Module for configuring Puppet itself, both the master and the clients ============================================================================ Use a seperate local module called "site_puppet", where you place your customized files, under: site_puppet/files/master/fileserver.conf site_puppet/files/master/puppet.conf Usage ===== The module currently looks for different variable values to adjust configuration of the master. Installing a specific versions ------------------------------ If you need to install a different version of puppet, other than the most recent, you can set the following variable: $puppet_ensure_version = '2.7.18-1~bpo60+1' You can also specify a different facter version by setting the following variable: $facter_ensure_version = '1.6.9-2~bpo60+2' Run puppet by cron: ------------------- By default puppet runs as its own daemon. However, you might want to run puppet by cron. To do this, you have to include `puppet::cron` instead of `puppet`. If you include puppet::cron then by default puppet will run twice an hour, spread amongst the half an hour depending on the host's fqdn. If you wish to change that interval, you can tweak $crontime (NOTE: this variable only operates on the minute cron field). Clientbucket cleanup: --------------------- The individual node client buckets aren't cleaned up automatically, unless you specify cleanup_clientbucket = 'X', where X is the number of days you want to keep clientbucket files for. Use http compression -------------------- To enable http compression on the clients, set $puppet_http_compression = true Puppetmaster Mode: ------------------ If you want to run the puppetmaster in a non-webrick based mode, you can set $puppetmaster_mode either to: * passenger, run puppetmaster as a passenger application, you will need the passenger module to take advantage of this * cluster, run puppetmaster as a mongrel based cluster, you will need the nginx and mongrel modules to take advantage of this In both cases you have to setup the appropriate frontends (apache vhost configuration/nginx vhost configuration) on your own. If you need to install a specific version of puppetmaster, you can specify the version to be installed by doing the following: $puppetmaster_ensure_version = '2.7.18-1~bpo60+1' NOTE: You will need the apt module in order to specify the puppetmaster version. Also, this functionality is only implemented for Debian and derived distributions. This is the apparent minimum manifest for installing puppetmaster: import 'common' include apt include concat::setup $puppetmaster_mode = 'passenger' include puppet::puppetmaster Munin ----- If you are using munin, and have the puppet munin module installed, you can set the variable $use_munin = true to have graphs setup for you. The graphs that will be setup track memory usage by the running puppetmasters; track the average compile time of clients; and if you are using postgresql/mysql then a graph to monitor resource counts. Reports cleanup: --------------- By default we clean up reports older than 30 days. If you want to change that, you can set $puppetmaster_cleanup_reports to one of the following values: * 'X', where X is the amount of days you want to keep reports for * false, to disable reports cleanup If your reports are in a different place than the default, you can set $puppetmaster_reports_dir to adjust their location. Check last run: --------------- We can check on the last run state of certain clients, to check whether they still check in. You can do that by setting the following variables: $puppetmaster_lastruncheck_cron * any cron time: '20 10,22 * * *' to run the script at a certain time by cron. Default: 40 10 * * * * false: to disable check for last run You will need the cron module to take advantage of this functionality. Stored configs: --------------- If you want to use storedconfigs on your puppetmaster, there are some pre-requisite modules: mysql, rails. In your puppetmaster node definition you will need to set $mysql_rootpw to the mysql root password, $puppet_storeconfig_password to the puppet database password, and then set $puppetmaster_storeconfigs = true to enable stored configs. Then you will need to either put in your node definition, or in site_puppet/manifests/init.pp puppet::puppetmaster::hasdb to setup the database with the right parameters. This will setup your storeconfigs database, adding to the database the correct user, the correct grant permissions, and also setup a munin graph, if you have $use_munin = true Currently, only mysql is supported. See manifests/puppetmaster/hasdb.pp for the define variables you can set. Example: -------- in your site.pp: node puppetmaster { $mysql_rootpw = "foo" $puppet_storeconfig_password = "bar" $puppetmaster_storeconfigs = true $use_munin = true $puppetmaster_mode = 'passenger' $puppet_crontime = "0,12 * * * *" include site_puppet::master include puppet::cron include puppet::puppetmaster ... in your site_puppet/manifests/master.pp you could include something like: class site_puppet::master { ... puppet::puppetmaster::hasdb { "puppet": dbname => 'puppetmaster', dbuser => 'puppet' }