puppet types and providers


After becoming very inspired following Martin Alfke's "Moving From Exec to Types and Providers" talk at Puppet camp London, I feel the need to share the love that is Types and Providers.

What are types and providers?

These are the building blocks of Puppet, written in Ruby that give us the Resource types in our classes, such as File or User.

If you don't mind 'fun' language, then Gary's post Fun with Providers here will help explain things better than I can here.

Why now?

I'm currently working on a scalable and resilient Mongodb replication cluster and have this long bash script triggered by an Exec. This is bad, not only because exec statements are a sign that technical debt is building, but the audit entries from Puppet are sparse.

My team will be working on getting up to speed with types and providers to create a much better Mongodb puppet module experience.

All going well, this code may find its way into the puppetlabs mongodb module.

(Read more...)

Architects and designers

Why do you need an architect or designer on your software project?

Writing reusable code is the heart of the DRY principle. However it is important to reuse the correct code.

A picture, as they say

plug animation

Technical Debt and Dependency hell can quickly create big issues and slow a project to a crawl. This can be avoided if a great architect and design steps are involved before the project starts. Often refactoring code will be required to make modules or functions loosely coupled and less dependent on each other.

Even within a Scrum and Agile framework, it is better to have a clear view of the end result and understand how the new 'thing', will interface with the existing 'stuff'.


(Read more...)

Puppet Camp Fall (Autumn) London 2016

A great day in London yesterday at Puppet Camp London 2016 held at the very beautiful Kings Place. The venue was a wonderful setting with its open gallery floors and 'scary' high escalator that spanned 2 floors.

150 or so expectant techies with about half the room as puppet beginners attended at my biggest speaking event so far.

My talk, Can puppet help you run docker on a t2.micro? appeared to be received well by those I had the good fortune to talk to after the event. We also shared a discussion about Docker Persistent Storage for which there is no clear solution yet. Persistent storage is useful for data that changes during the containers life time but not something you would want to 'bake' into an image or layer.

I've been playing with hosting a Wordpress site on Docker, and one solution I've arrived at is using a sync product like BTsync to form a mini network to synchronise data across a number of docker hosts. Another route being investigated for one of our customers is utilising a GlusterFS cluster with NFS client. Storing the data locally to each docker host.

I hope to be invited to speak at another Puppet event soon.

Dockerfile for BTSync

Link to slides

(Read more...)

housekeeping, support and reporting

Communication is the art of being understood and is key in any relationship.

We have daily stand-up meetings to enable the sharing of updates for each member of the team, operations or project, which enables everyone to have visibility of what is going on as well as report any obstacles impeding progress. Anyone is able to attend these meetings for total transparency.

In addition to the project work, housekeeping and operation support work alongside to keep the systems running as they should. Let me explain what we mean by this.


During a project, code is being updated and deployed all the time. Most of the systems rely on other software to operate and this too is being maintained and updated by external sources. To avoid dependency hell, our team evaluates and updates where needed the other software running on the server. This also includes removing redundant code and logs that are out of date. To keep things running as cleanly as possible, we also rebuild fresh servers as part of this step.

This can be a transparent so it is included in the weekly report.


Things change and sometimes an undesired outcome arises. With our monitoring systems in place, we proactively fix issues as we find them and report to you during and sometimes after the event. These events will of course be in the weekly report.


Once a week a report is compiled for our customers based on the information in the stand up meetings and if it is a project, a progress report is also included.

(Read more...)

tech - AWS, Puppet and Docker

In my talk - Can Puppet help you run Docker on a T2.Micro? - You will learn the technologies we use to create environments from scratch every day.

A walk through a number of the key concepts of puppet; stages, Role and profile, hieradata and puppet forge, as well as a brief introduction to Docker.
Using these to explain a solution of running a puppet manifest to configure Amazon's smallest (Yes I've run this on a t2.nano too) server to run a docker containerised web service.
You will learn why puppet stages can be used to help in this solution, how roles and profiles are defined and used, and finally use of the puppet Forge with Hieradata to install and run docker containers.
This talk will contain links to code that can be used afterwards and I'll touch on what docker is and how to configure the puppet module to automatically run containers.

Come see me talk at Puppet Camp - 8th November 11:15 in London.

(Read more...)