In Terminal command to mark a Munki optional install for installation, I showed a one-off command to mark a Munki optional install item for installation.
What if you want to do it in bulk, though? For example, if you're scripting a thin image to install some software by default, but you want the option for your users to uninstall the software later (i.e., you don't want the items to be managed install items).
I wrote a little script that will add various items of your choice to a the client machine's SelfServeManifest.
The syntax gets a bit tricky with bash variable expansion and single quotes, so I did a bit of a hack to get it working (created a temporary variable to store the source variable surrounded by single quotes).
What's the issue?
If all your updates are up-to-date in Managed Software Center, when you select an optional install to install, it will install in the background and be ready to use almost immediately.
If, however, you have some pending updates that require a logout or reboot, your optional install (even an unattended install) won't install unless you install all those other updates, too.
What's the workaround?
The best workaround I've found for this is to use Managed Software Center to queue up the optional install. Once it's queued up, quit of Managed Software Center and then run
sudo /usr/local/munki/managedsoftwareupdate --auto
which is the same command that the background hourly checks runs. You won't get any visual feedback, but all the unattended install items will install, and then you can take care of the reboot/logout items at a more convenient time.
Why would you want an optional install to process without logout/reboot items, too?
While I generally agree with Greg Neagle's (who is the author and primary developer on Munki) carrot-stick approach to updates, there are some times when it's extremely frustrating to have to wait for those updates to apply just to get one piece of software.
Of course I want users installing updates, so I don't want them constantly ignoring updates and then installing unattended_installs indefinitely.
At the same time, I have two main objections to an unwavering, no-exceptions carrot-stick approach to updates in Managed Software Center:
- We want user buy-in. At least for our organization, Managed Software Center (Munki) is a relatively new thing. We want people to use it. If it looks as if it takes ten minutes to install Skype or Firefox, that doesn't make MSC look amazing to the user—it makes MSC look cumbersome.
- Updates can come at any time. Yes, we control when updates get deployed, but we recently had a situation in which we'd recently released a set of logout-required updates (no reason not to that we could predict), and then a user wanted to install PowerTeacher Gradebook (an unattended install). In this case, it's not carrot-stick at all. Even if the user had been keeping up with all her updates, the one we just released suddenly appeared, so she didn't have a chance earlier to install the updates. So, again, it's super awkward when you're standing next to a teacher and say, "Yeah, just install this through Managed Software Center. Oh, yeah, we have a bunch of updates that require a logout. This may take a while." And then what would otherwise be a 30-second installation turns into a five-minute thumb-twiddling session.
Eventually, we're hoping to leverage the force install after date feature in Munki. Even then, we would use it sparingly and give users at least two weeks to install updates, so this workaround would still come in handy.