Sal 3.0

Sal 3.0 is a massive upgrade on Sal 2.7, so massive thanks to everyone who has contributed code and bug reports. In particular, big thanks go out to @sheagcraig for his work on the completely rewritten application inventory features.

What’s new in Sal 3.0?


Sal’s application inventory tracking has been completely re-written (thanks again Shea), and is much more useful, allowing for greater detail on what is installed, and where across your fleet.

We have migrated the basic search from using an external application that relied on building caches (so doubling the size of your database), to just querying the database directly.

The advanced search is completely new - it allows you to build up complex queries that would previously require you to build a plugin. These queries can also be saved so they can be shared with the rest of your team.


Your plugins can now process data server side during checkin. Perhaps you want to update Sal with information from your Inventory tool, or call out to a web service. Documentation can be found over here.


Sal scripts version 2.0.0 now uses basic http authentication by default (using the key set in preferences) on any endpoint that it retrieves data from (external scripts etc). This means that any potentially sensitive data you may have in your client side scripts is now protected. This can be disabled if desired - not recommended!.


If you have a lot of plugins enabled with client side scripts to download, you will be getting a lot of requests to your server. There is now a script available that will build a package containing all the external scripts enabled on your Sal install (or just download the files so they can be deployed with something like Puppet or Chef), and after setting the preference, the client will use these in preference to downloading them again.

If you are running Facter, you may be shipping duplicate data that Sal already collects - you are now able to specify facts that should not be sent to the server (enabling you to set different facts to ignore per client) or set it on the server to configure it globally.

Finally, every single transaction with the database has been optimised. A usual run from a client that has Facter installed with 50 facts has been reduced from 70+ calls to the database to less than 10 (Postgres only, sorry SQLite and MySQL users).

MacAD.UK 2017

I’m delighted to announce that the lovely people at Amsys have asked me to return to speak at MacAD.UK 2017 for it’s second year. This year I will be talking about Airbnb’s transition from a commercial macOS management platform to an entirely open source stack - “Something something commercial, something something open source”.

See you all in February!

0 to Imagr-ing in 45 minutes

If you attended my talk in Gothenburg today, thank you! The slides from my primary talk, “0 to Imagr-ing in 45 minutes” are available here, and you can find the all of the code I used on GitHub. If for some reason you would like my slides on beer in London (or, VMware is slow at imaging a disk and I needed to fill time), you can also get them here.

Return of the Yo notifications

Last time, took our first steps to notify our users about updates in a slight nicer way. This time we are going to modify our script so that our users are only bugged once a day, and also not promoted to install 10.11 if they’re already running it.

Unfortunately for some, whilst this will be possible if we stuck to using bash, it would drive me insane, so we are switching to Python. Don’t be scared! Python makes a lot of sense once you get your head around it, and you’ll be a much happier mac admin once you leave the 1500 line bash scripts behind.

Read more →

More notifications with Yo: The Yo Strikes Back

Last time, we took our first look at the fantastic Yo. This time, we’re going to o something useful - we’re going to open an item up in Managed Software Centre.

Let’s build our command to show the notification. Note that InstallElCap is the name of the relevent item in Munki. You could for example, replace it with munki://detail-GoogleChrome.

$ /Applications/Utilities/ --title "Update Required" --info "Your operating system is out of date. Please upgrade ASAP." --action-btn "More Info" --action-path "munki://detail-InstallElCap"

Read more →