-
Notifications
You must be signed in to change notification settings - Fork 51
DynamicManifests
Simian generates three base manifests: unstable, testing and stable. Base manifests should generally include packages an admin wishes to deploy to most or all clients in a given track.
Dynamic Manifests allows for on-the-fly manipulation of a base manifest, enabling admins to add packages to or remove packages from a manifest based on various metadata about the client.
There are two options:
-
In the web-based Admin UI, on the side menu, click Manifests -> Modifications Admin, select a Mod Type (see below), desired Install Types, a Munki Package Name, and (optionally) which Manifests the modification applies to.
-
Programmatically interact with the Dynamic Manifests API.
The following modification types are listed in order of lowest to highest precedence:
- Site: shortened site name, e.g. NYC or MTV.
- OS Version: full OS version, e.g. 10.8.2
- Owner: owner username, e.g. foouser.
- UUID: full UUID of the client.
- Tag: name of the Tag (group) of the client, e.g. Engineering.
Therefore, Tag manifest modifications will overwrite modifications to the same package name and install_type as a UUID modification, and so on up the stack.
- Simian does not currently resolve conflicts of a single package name spanning across multiple install_types. For example, if one manifest modification adds "FooPackage" to managed_installs, but another adds it to managed_uninstalls, the Munki client is given a manifest with both additions.
Base Manifest:
<plist version="1.0">
<dict>
<key>catalogs</key>
<array>
<string>unstable</string>
</array>
<key>managed_installs</key>
<array>
<string>FooPackage</string>
</array>
</dict>
</plist>
With a Manifest Modification target of "foouser" and package name value of "BarPackage" on Munki install_types of managed_installs, the the manifest for this user will be:
<plist version="1.0">
<dict>
<key>catalogs</key>
<array>
<string>unstable</string>
</array>
<key>managed_installs</key>
<array>
<string>BarPackage</string>
<string>FooPackage</string>
</array>
</dict>
</plist>
Packages can also be removed from the base manifest by leading the package name with a minus sign ("-"), such as "-FooPackage". Couple this with the above modification, and foouser's manifest will result as:
<plist version="1.0">
<dict>
<key>catalogs</key>
<array>
<string>unstable</string>
</array>
<key>managed_installs</key>
<array>
<string>BarPackage</string>
</array>
</dict>
</plist>