Introduction
Munki 7 (Swift) is a fairly major rewrite from Munki 6 (Python), but the core functionality is still the same (with some minor differences, including some improvements).
First of all, even though I’ll go over some key 6-to-7 transition points here, I’d highly recommend you read the Munki 7 introduction page on the Munki wiki, as it includes links to detailed information on things you should keep in mind when upgrading.
That said, while there are things to consider and steps you should take when upgrading, the upgrade itself is fairly seamless. Test, test, test, of course, but there’s really no need to stick with Munki 6 if you’ve been afraid of taking the plunge to Munki 7.
What you gain

Not a comprehensive list here, but with Munki 7, you get…
- A revamped Managed Software Center, with a new icon that fits the requirements for Tahoe’s “squircle.”
- version script, which in many cases can replace an installcheck_script but allow for Munki to differentiate versions and not just “Is this installed or not?”
- Managed Software Center sidebar customizations now including the ability to add more items to the sidebar besides Software, Categories, My Items, and Updates.
- Actual future releases. It’s possible that a new version of Munki 6 may come out down the line, but most of the major developments in Munki will be coming to Munki 7, not 6. If you upgrade to Munki 7, you will get new improvements and bug fixes going forward.
The transition
Munki Python dependence
If you have any scripts that use /usr/local/munki/munki-python, be sure to revise those scripts to either not use Python or to use a different Python (e.g., the MacAdmins Python).
If you’ve been using something like Munki Facts, you may want to rewrite it to use a different Python, or you can switch to something like bash facts.
PPPC profile
I don’t see how you can manage a Munki fleet at scale without an MDM, so it’s very likely you have a PPPC profile for Munki.
For the transition from Munki 6 to Munki 7, I’d recommend using the PPPC profile that works for both—details in the PPPC Privacy permissions wiki page for Munki.
Removed features
Munki 7 no longer supports some outdated stuff, but you may be using some outdated stuff, so have a look at Munki 7 removed features
With Munki 7, the launch daemon for background runs no longer has a random delay included. I don’t necessarily consider this lost functionality. You may, however, if you have lab machines that all restart at the same time each day and thus would hit your Munki server with calls all at exactly the same time. Munki 7 launchd job changes includes some potential workarounds if that situation applies to you as a Munki admin.
Middleware
If your clients use middleware to talk to your Munki repo, you’ll want to switch from the Python-based middleware to the Swift-based middleware. Definitely do some tests. I know, for example, with the S3 middleware, a PR had to be made to fix some calendar-related issues, and a subsequent PR had to be made to address the middleware not being able to process .pkg or .dmg installers that have a parenthesis in the filename. You’ll definitely want to test as much as you can.
AutoPkg recipe
If you’ve been using the munkitool6-signed AutoPkg recipe to get updated versions of Munki, you’ll probably want to switch to the munkitools7 AutoPkg recipe.
Test as you would any new release
I’m assuming you have some kind of regular, gradual rollout process you do for new software or for new versions of existing software. Do that same process when you upgrade your fleet from Munki 6 to Munki 7. Do your own hands-on testing and ask for feedback from your users. Should you run into problems, file upstream issues and bug reports if you can.
Leave a Reply