Puppet

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

From Puppet web site:

Puppet is IT automation software that helps system administrators manage infrastructure throughout its lifecycle, from provisioning and configuration to patch management and compliance. Using Puppet, you can easily automate repetitive tasks, quickly deploy critical applications, and proactively manage change, scaling from 10s of servers to 1000s, on-premise or in the cloud.

Installation

Install the puppet package. Alternatively, install puppet-gitAUR for the development version.

If you want to install a puppet master you can install the puppetserverAUR package, the documentation for which is in Puppet server.

Configuration

Puppet's main configuration file is puppet.conf which is located at /etc/puppetlabs/puppet/puppet.conf.

There are 3 sections to place settings depending if it is a master/agent: [main], [agent] and [master].

Bare minimum of settings are:

  • server: The hostname of the puppet server. Default: puppet
  • report: Most users should set this to true.
  • pluginsync: Most users should set this to true.
  • certname: The certified name of the machine (unique identifier). Default: fqdn

Puppet will look for node configuration in /etc/puppetlabs/code/environments/production/manifests/site.pp.

After starting puppet by daemon/cron/standalone, it will generate certificates in /etc/puppetlabs/puppet/ssl/ directory. You need to accept this certificate in the puppet master:

# puppet cert sign name

Notes on bindaddress for puppet master.

The default value for bindaddress is 0.0.0.0, which makes puppet listen on IPv4 only: bindaddress = 0.0.0.0

To make puppet master listen on IPv6, set the bindaddress value to: bindaddress = ::

To make puppet listen on both interface, set the value to: bindaddress = *

Facter

Facter is a companion program of puppet that gathers facts about the system it runs on.

Commands:

# puppet facts find facter
# facter -p
Note: Facter is installed by default as a dependency of puppet.

Puppet Resources

Packages

Pacman is supported by puppet. Installing packages works out of the box since puppet 3.1.0.

Services

Since puppet 3.2.1, systemd on Arch Linux is fully supported.

Merge-arrows-2.pngThis article or section is a candidate for merging with systemd#Using units.Merge-arrows-2.png

Notes: Content below appears to duplicated target page, so just a link to systemd#Using units instead feels sufficient, but template author not sure if there are differences between Puppet's systemd provider and systemd on Arch Linux. (Also not experienced with Puppet.) (Discuss in Talk:Puppet)

The systemd provider in Puppet today only uses two commands for the service enable state:

systemctl is-enabled <unit>, checking return code for the current enable state
systemctl enable/disable <unit> to change it.

Otherwise service running will use:

# systemctl start/stop/restart <unit>

Using the full unit name unit.service is supported.

PuppetDB

PuppetDB is the fast, scalable, and reliable data warehouse for Puppet. It caches data generated by Puppet, and gives you advanced features at awesome speed with a powerful API. PuppetDB is available as puppetdbAUR and puppetdb-terminusAUR. See https://github.com/puppetlabs/puppetdb for more information.

Puppet Bolt

Puppet Bolt is standalone piece of software that was introduced by puppet to allow applying tasks without the need for puppet agent and puppet server (like Ansible/Salt). Of course many advantages of the master/agent-design are then lost but if you need to send one-time commands puppet bolt is the right tool for you.

For example restarting a webserver or deleting the mailqueue is done better with puppet bolt whereas keeping a a package to the most current version should be done with standard puppet configuration management.

The only needed package is puppet-boltAUR. More information can be found here: Documentation / official hands-on lab