Learning puppet by my self, I found useful to avoid common mistakes in my modules/manifests. No body knows puppet in my current position, so it’s hard get reviews of my work. I started looking at automated codereview/lint and stumble upon puppet-lint. In his last pre release, the tool implemented autofix of common errors. Let’s see how to measure my progress and learn from my mistakes
First step, to gain visibility, I’ve plugged puppet-lint in our jenkins instance. Setting up jenkins to collect puppet-lint warning. Small modification for me, I don’t abort the build to enable warnings collection with this modified rake task.
Install the pre-release of puppet-lint.
gem install --pre puppet-lint -v 0.4.0.pre1
Uninstall the previous version
gem uninstall puppet-lint Select gem to uninstall: 1. puppet-lint-0.3.2 2. puppet-lint-0.4.0.pre1 3. All versions > 1 Successfully uninstalled puppet-lint-0.3.2
Launch puppet-lint with auto-fix options.
ERROR: two-space soft tabs not used on line 15 ERROR: two-space soft tabs not used on line 19 FIXED: unquoted resource title on line 14 WARNING: line has more than 80 characters on line 5 WARNING: line has more than 80 characters on line 6
Double check the changes, launch rspecs, and a vagrant provision than commit
autofix with puppet-lint 8 files changed, 82 insertions(+), 63 deletions(-)
Lets see the jenkins statistics.
Thanks puppet-lint ! Now it’s time to fix the trivial one (two-space soft tabs) and less trivial one (“foo::bar not documented” , “class inheriting from params class” ,“define defined inside a class”,… )
What I’ve learned with this experiment:
– if you don’t show your errors, you are not really pushed to fix them
– it takes time to setup these quality tools, but it worth it.
– you are overloaded by warnings, fixing the stupid one automatically and fixing the easy one make you more optimist/confident to attack the harder one.
– it’s easier to fix when there are fresh in your mind