Stop People Calling Private Puppet Classes
When writing puppet modules sometimes you need to ensure that certain classes are only used within your module itself. For example a class that implements functionality based on the local operating...
View ArticleAsserting the Existence of External Facts
Facter 1.7 introduced support for external facts, and I gave some external fact examples, but it left a couple of small issues unresolved. One of the larger ones is the subject of syncing the external...
View ArticleValidating Config Files in Puppet and Ansible
While doing some experiments with Ansible I came across a little snippet of code that I really liked - - name: manage /etc/sudoers template: src=sudoers.j2 dest=/etc/sudoers validate='visudo -cf %s'...
View ArticleLiquid Templates in Puppet - Initial Release
Puppet has always supported templating via ERB and while it’s a powerful, flexible templating engine the ability to use any arbitrary ruby code inside a template that’s run on the puppet master...
View ArticlePro Puppet 2nd Edition - Initial Impressions
The kind people at Apress provided me with an alpha review copy of Pro Puppet and while it’s not the finished product you can already get a good feel for the books tone and coverage.I quite liked the...
View ArticlePuppet Book Summary - 2013
Even though I don’t spend as much time writing puppet code as I used to I try to stay relevant and as part of that I like to read all the Puppet books that come out. Below are the ones I’ve read this...
View ArticlePuppet Resource Ordering Options
Over the years Puppet has handled resources ordering without explicit dependencies in different ways, with the release of Puppet 3.3.0 they’ve exposed this ordering logic to the admin with three...
View ArticlePuppet External Resource - a Hidden gem
“a simple resource that blocks transactions until a check passes, theoretically indicating that a remote resource is in a desired state.” – Puppet Remote Resource DocumentationI stumbled over the...
View ArticlePackage Install Options in Puppet
One of the new features released in Puppet 3.4.0 is the ability to add options to rpm package installs. This is a feature that’s been discussed in a couple of tickets over the years and now we’ve got...
View ArticleStructured Facts with Facter 2
Structured facts in facter had become the Puppet communities version of ‘Duke Nukem Forever’, something that’s always been just around the next corner. Now that the facter 2.0.1 release candidate is...
View ArticlePuppet Certified Professional 2014 Exam
A little while ago in a twitter conversation, many hops away a few of us discussed the Puppet Certified Professional exam and topic coverage. Specifically how much of it was focused on Puppet...
View ArticlePuppet Lint Custom Checks
In the past if you wanted to run your own puppet-lint checks there was no official, really clean way to distribute them outside of the core code. Now, with the 1.0 release of puppet-lint you can write...
View ArticlePuppet 3.7 File Function Improvements
Puppet’s always had a couple of little inconsistencies when it comes to the file and template functions. The file function has always been able to search for multiple files and return the contents of...
View ArticleFacter: Ansible facts in Puppet
Have you ever needed to access Ansible facts from inside Puppet? well, if you ever need to, you can use the basic ansible_facts custom fact.# make sure you have ansible installed$ sudo puppet resource...
View ArticleSimple Puppet Module Testing with Dockunit
I’ve recently begun to look at replacing as much of my custom puppet tooling as possible with third-party, open source, code. As part of this I’m planning to update my old libvirt testing...
View ArticlePuppet validate_json_schema function
A few projects ago we had a JSON app with quite a fiddly config file that was undergoing rapid iteration. Although we never deployed an invalid JSON config we hit a couple of snags with config files...
View ArticleIntroducing the Deprecate function
A fair while ago I wrote a Deprecation Warnings From Puppet Resources blog post and metaparameter for adding expiry information to your manifests -file { '/ec/cron.d/remove_foos': ensure => 'file',...
View ArticleNo symbolic file modes - puppet-lint check
Modern versions of Puppet allow you to specify the mode of a file resource in one of two ways, either as a traditional octal value or the (newer addition) symbolic file modes. Although these may seem...
View ArticleDuplicate class parameters check for puppet-lint
In versions of Puppet under 3.8.5 it’s been possible to have the same parameter name specified multiple times in a class definition without error. Although allowed it was a little misleading as only...
View ArticleNo cron resources - customisable puppet-lint check
Sometimes there are certain puppet resource types that you don’t want to include in your code base. In my case it was cron but in yours it could be the more line originated augeas or the horribly named...
View Article