Graham Gilbert bio photo

Graham Gilbert

A Mac admin, automating the hell out of things in London.

The opinions on this site are my own, and are not necessarily shared by my employer.

Twitter LinkedIn Github

MacAD.UK 2016: Puppet on OS X

First off, thanks for coming (if you did indeed come - if you didn’t, you can go away). All of the code I used in my talk is up on Github, and you can grab the slides as well if you feel so inclined.


Dynamic first boot scripts with Imagr and Flask: Part 4

If you are just starting with this series, it is highly recommended you start with Part 1.

The last part of this series is making it work in a Docker container. This is not a Docker tutorial - please head over to Docker’s getting started pages to get yourself set up with the Docker Toolbox.

All done? Let’s crack on with first creating our Dockerfile.

Continue reading...


Imagr 1.0.0 Released

It’s been a lot of work, but I’m pleased to say that Imagr has grown up and as I now consider it to have everything I originally intended it to have, I’m calling this a 1.0.0 release.

You can get hold of it on GitHub, and if you want to get started with it, there is a load of information on the Wiki.


Dynamic first boot scripts with Imagr and Flask: Part 3

If you are just starting with this series, it is highly recommended you start with Part 1.

Last time around we got our app returning something useful to Imagr. This time around we’ll make our second endpoint - the one that will create the machine’s individual Munki manifest on the server.

Our fictional setup is making use of the default manifests Munki looks for - eventually it will request the machine’s serial number if no client identifier is set. Our manifest will contain three other included manifests:

  • One for the site where the machine is located.
  • One for the machine’s build.
  • A general one for all machines (the site default).

Continue reading...


Dynamic first boot scripts with Imagr and Flask: Part 2

If you are just starting with this series, it is highly recommended you start with Part 1.

Last time we built a basic app that will ask for a username and password to access it. Now we’re going to add in some other data that will eventually be sent by Imagr to let our script be dynamically generated.

Continue reading...