geoffwilliams@home:~$

  • Integrating PDK

    PDK has now well and truly arrived on the Puppet landscape. With Puppet 6, its mandatory in order to build Puppet modules (unless you stay on an older version of Puppet of course…). That means third party tools like PDQTest need to integrate PDK somehow or be stuck forever on...

  • PE_Kit - Demo Puppet Enterprise without an engineer

    Do you need to sell a complicated product to customers and have to take Sales Engineer out on trips to do basic demos to Sales Qualified Leads? Before Declarative Systems existed, there was PE_Kit, a GUI for demoing Puppet Enterprise in seconds, not minutes. PE_Kit still works and is 100%...

  • Deploying a Private Puppet Forge

    If your using Puppet or Puppet Enterprise with a Control Repository (which you definitely should be), then you may have noticed that the instructions mention two main ways of getting this working: Use the Puppet Forge directly Mirror modules to a local git server and use from there. Many larger...

  • Giving your Puppet Code the Onceover

    Ever wanted to do some basic testing of your Puppet Control Repository but no idea how to get started? Dylan Ratcliffe from Puppet had this problem a couple of years ago and his answer was Onceover. What does Onceover do? Onceover lets you quickly and easily test your Puppet Control...

  • Puppet Custom Facts

    Facter is an open-source tool for inspecting your system and is an integral part of Puppet. Facter gives users the ability to gather inventory information on a hundred or so different items on nodes connected to Puppet. Once Puppet knows about a particular fact, it will appear in the console...

  • Retrofitting Testing To Your Puppet Modules

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. Testing is great, everyone should test from day one, but… not everyone does, for one reason or another. Fortunately, there’s a really easy way to add testing to an existing module called...

  • Puppet under Docker _with R10K

    Ever had the burning desire to run Puppet Enterprise inside a Docker container? It’s possible and I’ve done it. Why? I didn’t feel like managing a fleet of VMs on the cruddy old laptop I’m using as my home network server, I wanted something more light-weight. At first I used...

  • Docker GitBlit

    If you need a local git server a really handy one is gitblit. You guessed it, it’s available as a Docker container. If your up-to-speed with Docker networking, then you can be up and running with a working git server within minutes: Exporting default data to the host It’s best...

  • Docker Shell

    You can use docker attach to connect to a running docker process but I always seem to get a blank screen when I try this, probably because I refuse to stick to the one-process-per-container paradigm to do tricks with systemd. There’s another way of getting a terminal on a docker...

  • Docker Networking

    The official reference for Docker Networking is can be found at https://docs.docker.com/articles/networking/ and is an interesting read but one that leaves many questions unanswered - notably how the %$@! do I connect a container directly to my network. ‘Normal’ Docker networking By default, Docker will manage its own NATed network...

  • Puppet and VMWare

    There are two aspects to management of VMs using VMWare: Provisioning and lifecycle of the VM as an instance on the hypervisor and ongoing management of the VM itself. Puppet is able to manage both of these areas, the degree to which things are managed is up to the system...

  • Reading puppet.conf with ruby

    Sometimes your writing a bit of ruby code to do some mad puppet stuff and realise that do things properly your going to have to read a value from puppet.conf… but how do you do that? Inside a Puppet component If your adding code to an existing Puppet component, a...

  • First Steps With Docker

    Docker. Everyones talking about it but what can we actually do with the thing? I wanted to have a go at controlling Docker with puppet using the garethr/docker forge module, but first I needed to learn a bit about Docker itself. First Impressions First impressions are always important and having...

  • Anatomy of an Augeas Bug

    Sometimes you get one of those bugs that requires a completely different mindset to the ones you normally get to fix: No stack trace No clear error message Tons of Regular Expressions An unfamiliar language … No problem! What is Augeas anyway? Augeas is a neat system for parsing and...

  • Garbage collection in Java

    Java garbage collection can really be like black magic at times. Most of the information out there comes from blog posts (er like this one!) that while accurate at the time no longer hold true when it comes to a modern JVM implementation. With this in mind, and to help...

  • Test HTTP proxy Vagrant box

    Have you ever been tasked with testing a proxy server and realise that you first need to set one up? I have… many times… so I’ve decided to make my life easier and produce a vagrant box thats setup to supply a working proxy server with easy switching between authenticated...

  • How to fix ugly blurred fonts on Xubuntu 14.04 and Firefox

    It’s taken me the best part of a day to figure out how to get fonts on Xubuntu and Firefox to not trick me into thinking I need glasses. Here’s how you can fix your fonts if your not a fan of really blurry anti-aliasing. # windows true-type fonts sudo...

  • Updating R10K with git hooks and MCollective

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. Manually updating R10K after changes are pushed to git is a major pain. There are a few ways this can be made to work transparently and this article discusses one possible option:...

  • Integrating R10K, environments and hiera-eyaml

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. Larger organisations will benefit from the use of environments in puppet but these have been tricky to setup and maintain in the past. This article will show you how you can quickly...

  • R10K and hiera-eyaml

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. Hiera-eyaml can be used as a drop-in replacement for the yaml backend to hiera. Eyaml allows sysadmins to have encrypted values for plaintext keys and also plaintext values for plaintext keys. The...

  • Puppet Language Features

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. To better understand some of the language features of puppet, I’ve been carrying out and documenting some experiments around scope, parameterized classes, defined resource types and resource defaults. The module code developed...

  • Puppet policy based autosigning

    Policy based autosigning works by running a script each time a new certificate signing request (CSR) comes in. The script is written by you, the user and tells puppet whether to accept the certificate (exit status 0) or to reject it (non zero exit status). Your script can be written...

  • Inheritance – not just to be avoided in puppet

    The general consensus around inheritance in puppet is to only use it when you need to inherit defaults from params.pp files. Due to a quirk of the language parser inheritance is the only way to get these variables into scope when setting default parameters when writing a parameterized class. The...

  • WTF is R10K?

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. If you start doing any serious work with Puppet these days, you will hear people mentioning R10K frequently. It took me a while to get my head around what R10K actually does....

  • REST Cheat Sheet

    Example service URI https://foobar.com/collection/element Interface Verb Collection Element Success code GET List Representation 200 OK POST Create element with system assigned URI Not used 201 CREATED PUT Replace collection Replace element 201 CREATED DELETE Delete collection Delete element 204 NO CONTENT OPTIONS Describe interface Describe interface 200 OK HEAD Metadata...

  • Puppet Directory Environments

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. Puppet directory environments vs config file environments Puppet has allowed “environments” in the puppet.conf file for a long time but there’s now a new way to create environments using a simple directory...

  • MCollective Traffic Analysis

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. MCollective Traffic Analysis This article describes the steps I took to perform traffic analysis on the Puppet Marionette Collective/ActiveMQ messaging system using wireshark and Linux commands. Method Use wireshark on the virtual...

  • Installing R10K in Puppet Enterprise

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. This is the ‘Hard Way’ of doing an R10K install for a new Puppet Enterprise system. If you want to go the ‘Easy Way’ there is an R10K module on Puppet Forge...

  • Puppet Environments in-depth

    Outdated This article was written for an old version of Puppet Enterprise and exists for reference purposes only. Once your up and running with R10K, your environments are ready to use. You can associate a node system with an environment in one of the following ways: puppet.conf You can request...

  • dem2stl

    dem2stl is a simple python script to convert digital elevation maps in image format into STL format for 3D printing. Code is available on Github under a GPLv2 licence Example object

  • OOMs in Puppet

    Out of memory errors can sometimes happen on your Puppet Master server when you haven’t allocated enough RAM or swap to the VM your running it from (as I had - whoops). Unless you know what your looking for, you can spend hours investigating mysterious failures and strange tweaks that...

  • JXML Validator

    JXML Validator provides an easy command line and GUI interface for validating XML files to all schemas defined in the document. This is really useful if you have very complicated XML and simply want to check if its valid or not, as is often the case with OGC Web Services....