# Puppet

Related articles

- Puppet Dashboard

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

puppet is available is available in the official repositories.

If you want to install from Puppet's git repo, puppet-git is available through the AUR.

## Configuration

Puppet's main configuration file is puppet.conf which is located at `/etc/puppet/puppet.conf`. You have 3 options to place settings depending if it is a master/agent

     [main]
     [agent]
     [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/puppet/manifests/site.pp`.

After starting puppet by daemon/cron/standalone, it will generate certificates in `/etc/puppet/ssl/` directory. And you need to accept this certificaten the puppet master with: `sudo puppet cert sign <name>`.

## 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 archlinux is fully supported.
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.

## extra/patches

### Puppet 3.2.1

If you want to enable the "storeconfig" option in /etc/puppet/puppet.conf you will also need this patch:

    diff -urN puppet-3.1.1-orig/lib/puppet/rails/resource.rb puppet-3.1.1/lib/puppet/rails/resource.rb
    --- puppet-3.1.1-orig/lib/puppet/rails/resource.rb      2013-03-13 20:53:21.766846140 +0100
    +++ puppet-3.1.1/lib/puppet/rails/resource.rb   2013-03-13 21:01:07.337490296 +0100
    @@ -84,7 +86,11 @@
       end

       def [](param)
    -    super || parameter(param)
    +    if param == 'id'
    +      super
    +    else
    +      super || parameter(param)
    +    end
       end

       # Make sure this resource is equivalent to the provided Parser resource.

Apply in the same place.

Before you apply above patch read this:using_stored_configuration

## 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 in aur install puppetdb and puppetdb-terminus
[More information: https://github.com/puppetlabs/puppetdb]

Category:

- System administration