Skip to content
This repository has been archived by the owner on Feb 13, 2019. It is now read-only.

DynamicManifests

Justin McWilliams edited this page Oct 17, 2014 · 2 revisions

Introduction

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.

How to create Manifest Modifications

There are two options:

  1. 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.

  2. Programmatically interact with the Dynamic Manifests API.

Modification Types

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.

Notes

  • 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.

Examples

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>