Attempting to automate the installation and configuration of my personal laptop with Puppet.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This is an attempt to use Puppet to manage applications and configuration on my personal laptop.

As I use a Mac, applications mostly come in the form of disk images from the Internet (files ending in .dmg) or in some sort of archive (e.g. MacVim which comes in a .tgz). Development tools (such as git) are installed via Homebrew and Ruby is installed via rbenv and ruby-build.

To accommodate all of the above, I have written a few Puppet package providers:

  • dmg: To download disk images from a URL and then extract specific applications from them into /Applications;
  • tar: To download tarballs from a URL and then extract specific applications from them into /Applications;
  • homebrew: To install packages via Homebrew;
  • ruby_build: To install versions of Ruby through ruby-build.

I use the excellent vcsrepo resource type via a git submodule to manage the installation of Homebrew, rbenv and ruby-build (as they are all just git repositories).

This is very experimental at this point though I am using it personally. If you would like to try it out, you will need to clone this repo and pull in the vcsrepo git submodule like so:

$ git clone
$ cd puppet-workstation
$ git submodule init
$ git submodule update

And then you can run it with:

$ ./workstation.rb

To perform the necessary one-time setup as root, you can simply do:

$ sudo ./workstation.rb