What is it?

Managedmac is a Puppet module designed to make OS X configuration simple.

You don't need to understand Puppet to use it (though it helps).

Once you've installed the components, all you need to do is create a configuration file and run Puppet.

It's that simple.

Quick Start

1. Choose Your Setup

Suitable for testing and development, not masterless Puppet installations.

Clone the repo

If you don't have git, then you'll need to install the Xcode commandline tools: sudo xcode-select --install

git clone https://github.com/dayglojesus/managedmac.git && cd managedmac
Run Setup

There are two setups: one for demonstration, one for development.

sudo rake setup

Running the development setup installs the gems required for running tests, etc.

sudo rake setup[development]

Demonstration of what a masterless Puppet setup might look like.

You need to install the following packages:
Install these gems:
  sudo gem install CFPropertyList sqlite3
  sudo puppet module install sfu-managedmac
And create this symlink:
  cd /etc/puppet
  sudo ln -s /etc/hiera.yaml hiera.yaml

2. Create a Configuration

Open your favorite text editor, copy in the YAML below and save it as (requires root):

# Configure the Dock using an OS X profile
      largesize: 128
      orientation: 'left'
      tilesize: 128
      autohide: true
      PayloadType: 'com.apple.dock'
    displayname: 'Managed Mac: Dock Settings'

3. Apply a Puppet manifest

Here's a simple Puppet manifest expressed in puppet apply

sudo puppet apply -t -e 'include managedmac'

In addition to changes in the Dock's appearance you should see a new profile named Managed Mac: Dock Settings' appear in System Preferences.

If you delete this profile and run Puppet again, it will re-appear. Try it.

Now, try running this and inspecting the output...

sudo puppet resource mobileconfig managedmac.dock.alacarte

More Documentation

The demonstration above provides just one quick example of what can be accomplished. There are hundreds of configurations that can be made.

To learn more about this module and how it works, read the Overview and see the documentation on Custom Types and Classes.


This module was designed as part of the Managed Mac project at Simon Fraser University.

Released under the Apache License.


  • OS X 10.9 or greater
  • Puppet 3.x
  • puppetlabs-stdlib module
  • CFPropertyList gem
  • sqlite3 gem

Bug Reports

Please file bug reports using the Github Issue Tracker


The authors would like to thank the following folks for their invaluable contributions:

  • Gary Larizza
  • Christian Kruse
  • The generous operators and regulars on #puppet-dev
  • SFU ITS Mac Dev Team
    • Geoff Brown
    • Jeff Bryer
    • Grant Dimock
    • Brian Langdeau
    • James Peltier
    • Riley Shott
    • Brian Warsing