{"id":137,"date":"2019-01-30T06:00:18","date_gmt":"2019-01-30T06:00:18","guid":{"rendered":"https:\/\/www.alansiu.net\/munkiguide\/?p=137"},"modified":"2025-08-07T04:40:44","modified_gmt":"2025-08-07T04:40:44","slug":"manifestorganization","status":"publish","type":"post","link":"https:\/\/www.alansiu.net\/munkiguide\/manifestorganization\/","title":{"rendered":"Organizing your Munki manifests"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">So far, you&#8217;ve just been using <strong>site_default<\/strong> as the manifest for your machine. That may be fine to start with, especially if all your machines (Mac Minis, iMacs, MacBook Airs, MacBook Pros, etc.) are all going to get the same (managed and\/or optional) software.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">You may find, though, that you have special cases. Maybe one machine has to have a certain application definitely installed while other machines can have that application as optional (up to the user to install). Or maybe you have a group of machines that need only four applications, and the other machines need fifteen applications. Or you want some software available to one department but not another department.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">This is where serial number manifests and included manifests can come in handy.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Remember how Munki has <a href=\"https:\/\/github.com\/munki\/munki\/wiki\/Default-Manifest-Resolution#details\" target=\"_blank\">Default Manifest Resolution<\/a>?<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">First, it will try the fully qualified domain name for the machine, then the short hostname, then the serial number of the machine, then <em>site_default<\/em>. So if you create a manifest for the serial number, that will be used instead of <em>site_default<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Here is an example of how I would recommend you structure your manifests (note that <em>Display&nbsp;Name<\/em> is only in MunkiAdmin\u2014Munki itself doesn&#8217;t do anything special with the Display Name in manifests):<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"209\" src=\"https:\/\/www.alansiu.net\/munkiguide\/wp-content\/uploads\/2019\/01\/manifestorg01-1024x209.png\" alt=\"Manifest organization viewed through MunkiAdmin\" class=\"wp-image-138\" srcset=\"https:\/\/www.alansiu.net\/munkiguide\/wp-content\/uploads\/2019\/01\/manifestorg01-1024x209.png 1024w, https:\/\/www.alansiu.net\/munkiguide\/wp-content\/uploads\/2019\/01\/manifestorg01-300x61.png 300w, https:\/\/www.alansiu.net\/munkiguide\/wp-content\/uploads\/2019\/01\/manifestorg01-768x157.png 768w, https:\/\/www.alansiu.net\/munkiguide\/wp-content\/uploads\/2019\/01\/manifestorg01.png 1096w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The filename for your serial number manifest would be the actual serial number of the machine. This would have a catalog of <em>testing<\/em> if it were a machine that did testing or a catalog of <em>production<\/em> if it were in production, or both <em>testing<\/em> and <em>production<\/em> if you want it to get items from both catalogs. It would then include at least one other manifest.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Included manifests do not have catalogs. It&#8217;s also a good idea to have included manifests within a subdirectory (e.g., <em>groups<\/em> or <em>includeds<\/em>) just so you don&#8217;t accidentally have machines use them as machine manifests instead of included ones. It&#8217;s possible you would have a machine named <em>EnglishDept<\/em> but extremely unlikely you&#8217;d have a machine called <em>groups\/EnglishDept<\/em> (can hostnames even have a slash in them?).<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In this example above, <em>site_default<\/em> includes <em>groups\/common_software<\/em>, and the Mac Mini serial number manifest includes both <em>groups\/common_software<\/em> and <em>groups\/english_dept<\/em>.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"252\" height=\"255\" src=\"https:\/\/www.alansiu.net\/munkiguide\/wp-content\/uploads\/2019\/01\/manifestorg02.png\" alt=\"Import Manifests from CSV menu in MunkiAdmin\" class=\"wp-image-139\"\/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you would like to create a whole bunch of serial number manifests at once (not one at a time), you can import a comma-separated values text file.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If this all sounds too confusing right now, that&#8217;s okay. You can come back to it. If you just need to get up and running, and you can worry about manifest organization later, just stick with <em>site_default<\/em> for now.<\/p>\r\n\r\n\r\n\r\n<p><strong>Further&nbsp;Reading<\/strong><br>\r\n<!-- <a href=\"https:\/\/groob.io\/posts\/manifest-guide\/\" target=\"_blank\">An opinionated guide to Munki manifests<\/a><br> -->\r\n<a href=\"https:\/\/web.archive.org\/web\/20201108180916\/https:\/\/groob.io\/posts\/manifest-guide\/\" target=\"_blank\">An opinionated guide to Munki manifests<\/a><br>\r\n\r\n\r\n<a href=\"https:\/\/www.alansiu.net\/2016\/10\/19\/another-opinionated-guide-to-munki-manifests\/\" target=\"_blank\">Another opinionated guide to Munki manifests<\/a><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>So far, you&#8217;ve just been using site_default as the manifest for your machine. That may be fine to start with, especially if all your machines (Mac Minis, iMacs, MacBook Airs, MacBook Pros, etc.) are all going to get the same (managed and\/or optional) software. You may find, though, that you have special cases. Maybe one [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-137","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_shortlink":"https:\/\/wp.me\/paDrAJ-2d","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":7,"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":521,"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/posts\/137\/revisions\/521"}],"wp:attachment":[{"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alansiu.net\/munkiguide\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}