Munki (software)

Munki is a collection of open-source tools which manage software installation and configuration when used together with a web server-based repository of packages and package metadata. It is typically used by system administrators who need to manage software installations on large numbers of macOS computers, typically in enterprise and education environments.

Overview
On the server side, Munki can use any web server. You can use any available modern web server on any platform. Modern because some software packages can be over 2GB in size and older web servers have problems serving files of that size. Munki does not require the installation of specific software on the web server, but write permissions for directories and files on the web server are required.

Munki can install software delivered as standard Apple packages - the same kind of packages, that when double-clicked, open in Apple's Installer.app. Munki can also install software from disk images. In many cases, Munki can also remove the software it has installed. Munki can update software it did not install itself. Munki can be configured to install Apple Software Updates. This allows users without admin rights to be able to install available Apple updates. See here for more information.

Components
Most of the data munki needs to function is stored on a web server. Munki uses three types of data:


 * Installer items: these are packages or disk images containing the software to be installed. In many cases, you can use a package or disk image provided by the software vendor without having to repackage or convert the installer package in any way. Sometimes these are just referred to as "packages", but in actuality Munki can install from things that aren't strictly Apple Installer packages.


 * Catalogs: these are lists of available software, containing metadata about the installer items. You, as the Munki administrator, build these catalogs using tools provided with Munki. Catalogs are usually built from individual files, called "pkginfo" files, that describe the metadata for a single installer item. Learn more about pkginfo files here. The  tool is used to build catalogs from pkginfo files.


 * Manifests: A manifest is essentially a list of what software should be installed on or removed from a given machine. You could have a different manifest for every machine, or one manifest for all of your machines. Manifests can include the contents of other manifests, allowing you to group software for easy addition to client manifests. For example, you could create a manifest listing all of the software every machine in your organization must have. The manifest for a client could then include the common-software manifest, and additionally have software unique to that client.

Manifests and catalogs are stored on the web server as standard Apple plist files in text format. pkginfo files are also plist-formatted files.