Tiny Deathstars of Foulness

JSS-autopkg-addon Presentation from Allister Banks on Vimeo.

(Guest post by Allister Banks)

On June 26th, I had the pleasure of being invited by @Tecnico1931 to the NYC Metro JAMF user group meeting.

A worksheet I created for this event may be found here:

See also Shea Craig’s python-jss, and thanks go out to James Barclay, Sam Johnson, and all the folks mentioned in the video.

July 1st, 2014

Posted In: Mac OS X, Mac OS X Server

Tags: , , , , , ,

(Guest post by Allister Banks)

Working with modern tools in the ‘auto'(dmg/pkg) suite, it sure reinforces the old chestnut, ‘it’s turtles XML all the way down.’ The thing that struck me when first diving into using autopkg was that different product recipes could potentially have a good amount of similarities when they share common processors. One example is drag-drop apps that can be discovered with an ‘appcast’ URL, which, in my recollection, became common as the Sparkle framework gained popularity.

This commonality is exactly the type of thing sysadmins like myself seek to automate, so I built a few helper scripts to 1. discover what apps have appcast URLs, 2. generate the base download recipe, and further, the 3. pkg-building recipe that can use the download recipe as a ‘parent’, and the 4. munki or JSS recipes which can nest the pkg recipe in it. Recursivity is the new black.


Please do take a look if you feel you’ve got apps that folks haven’t built recipes for yet, and laugh at/use/fork my code as you see fit!

April 3rd, 2014

Posted In: Uncategorized

Tags: , , , , , ,

(Guest post by Allister Banks)

We’re several years in to Apple distributing its installer through its (formerly with the ‘Mac’ prefix) App Store, which if you right-click the bundle you can show package contents, and then navigate to the packages involved in the install as part of an Electronic Software Distribution image(or InstallESD.dmg for short.) Guidance remains the same, however, regarding getting the proper version of the OS to reinstall on your computer – in almost all cases, the newest hardware will only be supported by a ‘forked‘ version of the operating system. That means the process outlined here on Rich Trouton’s DerFlounder blog is still 100% applicable if you need to create and image with a tool like AutoDMG or perform a clean install for those models.

For the Lion releases of the OS, there was not really a functional difference between the InstallESD.dmg you’d find in the Install OS X {Mountain Lion,Lion}.app, and the old physical discs the installer was previously distributed on. Since the dmg was a bootable system unto itself, it had the normal complement of files with which you could query for what build it would install. In specific you could look at the same ProductBuildVersion key in the /System/Library/CoreServices/SystemVersion.plist file you’d find on any Mac(as of this writing, that number is 13B42 for most models released before the late 2013 Retina MacBook Pros and new MacPro.)

For the regular ‘universal’ builds (which would be listed here,) you can unflatten the OSInstall.mpkg you’d find in the Shared Support folder in the Contents folder within the app. (I have an automator service for expanding packages that may be of use to folks for this process, described here.)
Inside of the expanded OSInstall.mpkg you could open the Distribution file in your text editor of choice and look at the end of (currently) line three for the osBuildVersion value. (CreateOSXInstallPkg uses python’s minidom for this)

As of Mavericks, there’s a different directory structure inside the InstallESD.dmg, which confuses some folks who collect one for each of their forked models, and will need to continue to grab those specific builds from Internet Recovery for the foreseeable future. Fortunately, the only thing this new layout actually requires is a slight tweak to query:


The actual dmg that gets dropped on the destination (to boot from) is there at the root, but hidden from the Finder when the InstallESD.dmg is mounted. Another way of navigating to it(besides turning on hidden files) is to run this command from the terminal after mounting InstallESD.dmg:

open /Volumes/OS\ X\ Install\ ESD/BaseSystem.dmg

Inside that BaseSystem.dmg there is the regular SystemVersion.plist at the path you’d traditionally find it, as mentioned above.

And there you go! Now you can make sense of all these InstallESD.dmg’s you’ve been stockpiling to serve the forked models in your fleet.

February 24th, 2014

Posted In: Uncategorized

(Guest Post by Allister Banks)


As Venn diagram circles go, many folks in our community are getting into autopkg, and there’s even more that already use the JAMF Casper Suite. Over on the blog there’s an announcement for a new ‘processor’ add-on that can be installed with autopkg, that therefore can leverage the JSS API to fulfill many of the functions which up until present only Munki enjoyed. Please do read the release notes and give it a try!

January 6th, 2014

Posted In: Mac OS X, Mass Deployment

Tags: , , , , , , , ,

(Allister Banks Guest Post:)

As part of my presentations at LOPSA-East(the pdf slides of this one is here) earlier this year, I wanted to demonstrate how quickly you can get a proof-of-concept of Munki running on a recent Mac OS without Server. I had always used Greg Neagle’s awesome intro articles for MacTech(especially part 2,) which were  created back in 10.6 days(simpler times, amirite?) This video takes you through the setup of a Munki repo, and goes on to demonstrate not only basic Munki interaction and functionality, but if you setup MunkiWebAdmin and the reporting scripts on your clients in addition, it does a quick tour of that interface.

Setting Up a Munki Repository on 10.7+, Quick MunkiWebAdmin Demo from Allister Banks on Vimeo.

Pardon the length, lack of sound and meme’s sprinkled throughout, but I hope it’s of use to someone!

November 4th, 2013

Posted In: Mac OS X

Tags: , , , , , , , , , ,