JSS API and VMWare Fusion

I blame Quovadimus for this one 🙂 Or rather she suggested it to me today and I had a little time to experiment and wonder why I never posted or blogged about this before.

Before I begin, a big thanks goes to Marko Jung at Oxford University. I got the idea and some of the nastier variable code from him for this project as he has his own way of doing this. He posted about it back in 2013 for a JNUC presentation and I learned greatly from is.

Anyway ..

One of the bigger issues with software is licensing, especially when a place has bought multiple individual licences but not a bigger volume licence. I’ve found this especially true of VMWare Fusion in corporate environments. Getting IT purchasing to consolidate everyone seems to be a harder task than just dealing with it hence why I’m now publishing two scripts to my github to help you all deal.


First up is Casper_EA.sh. This is obviously the extension attribute component. What this does is detect if VMWare is installed, report back any serial number it finds or report back that it isn’t installed. That allows you to see what serial number is present on a particular client.

Second is Serialise_Fusion. This works by grabbing the current client’s JSS record, finding a field currently called “VMWare Serial” and pulling what data exists out. It will then run the VMWare Fusion Initialisation tool to then serialise the installation before use.

I’ve found many ways to do this, but this seems to be the cleanest way of adding a licence to Fusion. Even VMWare’s KB’s are a little confused and you can find multiple methods but this works for me and is simple. It’s best to run this script from a Casper policy immediately after installing Fusion for best results.

I’ve not had any issues with leaving the EA field blank and running the script. It fails gracefully and leaves you with a trial version.

Obviously this is all meant for JAMF’s Casper Suite as it relies on extension attributes and access via the Casper API. It’s worth a look for your own efforts as the API doesn’t have the greatest documentation out there. Hopefully this will change soon.