graham gilbert dot com Mac administration and assorted nerdity

Managing OS X Profiles with Puppet

There are many ways of managing configuration profiles on OS X - you can use MDM, Munki or any one of the other many great tools. My preferred method however is using Puppet.

By using Puppet, I get access to it’s templating features, and I can let others in my team adjust exposed settings through Hiera.

This post will walk you through the development of a a simple Puppet module and how to test it on an OS X virtual machine.

Continue reading...

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...