Monolithic vs Packaged-based Image Creation

The tried-and-true way of making Mac disk images has been to set up your software perfectly on the newest Mac hardware you have, delete some unnecessary files, and create a (monolithic) image of it.

Package-based image creation (notably using InstaDMG, and also possible with the Casper Suite and likely other tools) has been possible for a while now, and it purportedly better.

Can anyone with experience with both answer which way is better, and why? (Or, less objectively, which do you prefer and why?)


While I do have no personal experience with OS X, I am very much in favour of package-based provisioning due to the following OS-independent reasons:

  • Flexibility: database server, web server, load balancer, developer workstation, designer workstation. Would you have an image for every type or install everything everywhere? What about different releases of software?

  • Security/Manageability: How often would you update your images? Package-based provisioning allows you to have every new system up-to-date from day zero, by updating the source packages as needed, without having to touch the rest of the system.

For a more in-depth discussion of my point, I refer you to the "Golden Image or Foil Ball?" article by Luke Kanies of puppet fame.

[Shameless plug: Puppet works on OS X too!]

[Disclaimer: I'm a long-time puppet user.]


Having done both I prefer (and recommend if you can) to use the package based creation because of it's reusability and the ability to keep a master up to date without requiring one dedicated machine or the constant overhead of a monolithic image. I find the difference really goes between a manual or partially automated image creation process versus a nearly fully automated creation process.

The initial overhead of setting up a package based system is more than a monolitihic system largely because you have some initial large setups and the need to repackage certain installations (eg. Final Cut Studio, anything Adobe, etc.) It's also a little bit more tricky to install/run scripts as it's not the boot partition but the advantage of having a clean image never booted before removes the downsides of cruft and odd machine specific settings have been created when you create the monolithic image.

A monolithic image is easier (more familiar really) and allows the person setting up the image to use GUI tools for everything if necessary and avoid a lot of scripting.

Personally I use InstaDMG to make my base image and then use DeployStudio to actually do the imaging installation and add the additional packages, etc.