Puppet: Style pruefen mit puppet-lint als pre-commit hook

Ich hatte bereits puppet-lint in einem eigenen Blogeintrag vorgestellt. Noch schoener als das manuelle Aufrufen ist natuerlich das ganze als pre-commit Hook zu haben und gar nichts ins Repository rein zu lassen, was nicht den eigenen Regeln entspricht.

Folgendes ist mein pre-commit Hook:

#!/bin/bash
 
echo "Checking syntax with puppet-lint"
 
for i in $(git diff --name-only --cached | grep -E '.(pp)'); do
        if [ -f "${i}" ]; then
                # --no-80chars-check because of sshkey.pub and
                # https://github.com/rodjek/puppet-lint/issues/70
 
                puppet-lint --no-80chars-check --no-single_quote_string_with_variables-check --with-filename ${i}
 
                if [ $? -ne 0 ]; then
                        echo "ERROR: Bad syntax, see errors above. Aborting!"
                        exit 1
                else
                        echo "Nice work in: ${i} :-)"
                fi
        fi
done

Puppet: Syntaxpruefung mit puppet-lint

Mit dem Tool puppet-lint kann man die Syntax seiner puppet manifest Dateien pruefen. Die Installation erfolgt aus den Repositories:

sudo aptitude install puppet-lint

Die Syntaxpruefung geht dann mit dem Aufruf:

puppet-lint --with-filename /etc/puppet/modules

Falls es Auffaelligkeiten gibt werden diese auf der Kommandozeile ausgegeben:

root@host:~# puppet-lint --with-filename /etc/puppet/modules/
foo/manifests/init.pp - WARNING: line has more than 80 characters on line 5
foo/manifests/init.pp - ERROR: tab character found on line 34
foo/manifests/init.pp - WARNING: => on line isn't properly aligned for resource on line 23
root@host:~#