There are a number of ways to set preferences on OS X. To name a few:
- Local MCX
- Modifying the User Template
- Configuration Profiles (.mobileconfig files)
However, each has a drawback:
- Local MCX is rumored to be deprecated in favor of Configuration Profiles.
- The User Template exists in /System, which is generally understood to be owned by Apple. OS updates can (and will) replace files in the User Template folder, potentially breaking your changes or causing login issues.
- Although useful, Configuration Profiles can be extraordinarily difficult to work with.
Enter: scriptRunner, by Nate Walck. We’ve been deploying this for a couple of months, and it’s helped significantly. Just script what you want to happen at login, decide if you want it to happen once or at every login, then install your script in a specific location. Combined with dockutil, we’ve managed to transition most of our Local MCX settings to Bash scripts (which are pushed out via Munki).
Some settings were difficult to reimplement, though: for example, we wanted to disable Wi-Fi on our lab iMacs – they’re already connected via Ethernet, so there’s no reason for Wi-Fi to be enabled. With Local MCX, we had the ability to disable specific network interfaces, but that’s not possible with Configuration Profiles. What do we do?
Joe Chilcote’s outset proved to be exactly what we needed. Besides adding logging functionality, outset improves upon scriptRunner in that it can:
- Install packages at first boot
- Run scripts at first boot
- Run scripts at every boot
- Run scripts at first login
- Run scripts at every login
Therefore, our solution was to run a script at every boot that disabled Wi-Fi.
At the moment, the Macs on campus are running a range of 10.6.x to 10.9.x. Since outset has only been tested on 10.9.x, we’re pushing scriptRunner to Macs running 10.6.x to 10.8.x, and outset to Macs running 10.9.x. scriptRunner’s paths have been changed to match outset’s, so we can push the same scripts to both.
Tested with: 10.6, 10.7, 10.8, 10.9