Repository navigation
Home
JamfUploader is the name given to a set of AutoPkg Processors designed to interact with Jamf Pro. Most (but not all) of these processors are concerned with uploading things to a Jamf Pro Server. The Jamf Pro, Classic, and Platform APIs are supported. For a full list of processors, see the Processors section.
These may be added to AutoPkg recipes in sequence, to perform simple or complex workflows involving the Jamf Pro API.
For an introduction into JamfUploader, watch the 2021 JNUC presentation Making package uploading and deployment easier with JamfUploader by Graham Pugh and Anthony Reimer.
This repo contains the latest version of the JamfUploader processors.
Stable versions of the processors are hosted in the autopkg/grahampugh-recipes repo, in the JamfUploaderProcessors folder).
To use the processors, you need to add the grahampugh-recipes repo to your AutoPkg preferences:
autopkg repo-add grahampugh-recipes
Or, if you want the bleeding-edge development versions, add the Jamf-upload repo:
autopkg repo-add grahampugh/jamf-upload
Note that if you add both, the first one in the search hierarchy will win. So typically you'll want to ensure that the jamf-upload repo is higher up the list.
In a recipe in plist format, you call the processor as follows (in this example we are calling JamfPackageUploader):
<dict>
<key>Processor</key>
<string>com.github.grahampugh.jamf-upload.processors/JamfPackageUploader</string>
</dict>In a recipe in yaml format, this would look like:
Processor: com.github.grahampugh.jamf-upload.processors/JamfPackageUploaderThe jamf-upload.sh script provides a way of utilising the framework provided by the JamfUploader processors, without writing recipes. This is most useful for simple, one-off tasks such as uploading a script or package, or deleting an object. It is designed to be run using command line flags, which means it can be called as part of wrapper scripts that may perform repetitive identifiable tasks, reducing the need for writing bespoke API scripts or commands, or using tools like Postman.
For more information and usage instructions, please go to the jamf-upload.sh wiki page.
The JamfUploader project has been mentioned in various blog posts and presentations. Here are some I found, please feel free to send me any missing links:
- JamfUploader - new AutoPkg processors for importing packages to Jamf Pro, blog post by Graham Pugh.
- Integrating AutoPkg into Jamf Pro, blog post by Anthony Reimer.
- YAML-formatted AutoPkg recipes can now be run natively without conversion to plist, blog post by Graham Pugh.
- AutoPkg - verify and update trust information on all recipes in a recipe-list, blog post by Graham Pugh.
- JNUC Presentation - 21 October 2021 - Making package uploading and deployment easier with JamfUploader, conference presentation by Anthony Reimer and Graham Pugh.
- How do changes to the Jamf Pro API authentication affect JamfUploader and JSSImporter?, blog post by Graham Pugh.
- JamfPackageUploader 'JCDS-mode' for a new way to upload packages to Jamf Cloud, blog post by Graham Pugh.
- JamfRecipeMaker - use AutoPkg to make Jamf recipes automatically!, blog post by Graham Pugh.
- Comparing a JamfUploader recipe to a standard JSSImporter recipe, blog post by Graham Pugh.
- Stage packages to production with AutoPkg and JamfUploader, blog post by Graham Pugh.
- Create Dock Items With Autopkg, blog post by Marcel Kessler.
- JamfPatchUploader: Automate Jamf’s Patch Management with AutoPkg, blog post by Marcel Kessler.
- MacAdmins Presentation - 14 July 2022 - Demystifying JamfUploader, conference presentation by Anthony Reimer and Graham Pugh.
- Demystifying JamfUploader at MacAdmins, blog post by Anthony Reimer.
- MacAdmins Podcast, Episode 276: Big Changes to Jamf APIs and JSSImporter, MacAdmins Podcast appearance by Graham Pugh.
- JamfPatchUploader: Manually manage Patch Policies, blog post by Marcel Kessler.
- Clean up your packages in Jamf Pro automatically with JamfPackageCleaner, blog post by Graham Pugh.
- Introducing JCDS 2.0 for uploading packages to Jamf Pro Cloud distribution points, blog post by Graham Pugh.
- Automated Jamf Patch Workflows, a blog post by Drew Barnes.
- Using AutoPKG with GitHub Actions, resources related to a JNUC presentation by Betsy Olaussen.
The following people have contributed especially significantly to this project:
- @zackn9ne - early contributions to the python project.
- @MLBZ521 - various functionality improvements and bug fixes.
- @Marschelloss - contributed the
JamfPatchUploaderandJamfDockItemUploaderprocessors. - @jc0b - contributed the
JamfUploaderTeamsNotifierprocessor. - @everettallen - provided additional help with Notifier processors.
- @novaksam - helped provide code to support multiple package distribution points for
JamfPackageUploader. - @mosen and @rodgerramjet - provided the logic for
jcds_mode(now deprecated). - @cr3ation - contributed the
JamfPackageCleanerprocessor. - @neilmartin83 - contributed the
JamfScopeAdjusterandJamfExtensionAttributePopupChoiceAdjusterprocessors. - @jazzace - has contributed to the project's documentation and knowledge sharing in many ways
- @mpanighetti - also helped with documentation
Many other people have also made contributions to this project, be that via GitHub PRs, Issues, or feedback in the MacAdmins Slack. Thank you all!
JamfCLIRunner is a sister processor to JamfUploader. JamfCLIRunner uses the jamf-cli tool as the API engine. This allows AutoPkg recipes to be constructed not only for Jamf Pro/Classic API endpoints, but also for Jamf Platform, Protect, and School API endpoints.
The Jamf-API-Tool uses the Jamf Pro/Classic API endpoints to perform discovery tasks, such as finding unused packages. Please go to Jamf API Tool
- Credentials
- Required privileges
- Configuration for distribution points
- JamfUploader as an alternative to JSSImporter
- Example recipes
- Uploading a package only
- Example Workflows
- JamfRecipeMaker
- AppStoreInfoProvider
- ConvertGroupXMLtoJSON
- JamfAccountUploader
- JamfAPIClientUploader
- JamfAPIRoleUploader
- JamfCategoryUploader
- JamfComputerGroupDeleter
- JamfComputerGroupUploader
- JamfComputerPreStageUploader
- JamfComputerProfileUploader
- JamfComputerStaticGroupUploader
- JamfDirectoryServiceGroupEncoder
- JamfDockItemUploader
- JamfExtensionAttributePopupChoiceAdjuster
- JamfExtensionAttributeUploader
- JamfIconUploader
- JamfMacAppUploader
- JamfMobileDeviceAppUploader
- JamfMobileDeviceExtensionAttributeUploader
- JamfMobileDeviceGroupUploader
- JamfMobileDeviceProfileUploader
- JamfMobileDeviceStaticGroupUploader
- JamfMSUPlanUploader
- JamfObjectDeleter
- JamfObjectReader
- JamfObjectStateChanger
- JamfObjectUploader
- JamfPackageCleaner
- JamfPackageRecalculator
- JamfPackageUploader
- JamfPatchChecker
- JamfPatchUploader
- JamfPkgMetadataUploader
- JamfPolicyDeleter
- JamfPolicyLogFlusher
- JamfPolicyUploader
- JamfSchemaLister
- JamfScopeAdjuster
- JamfScriptUploader
- JamfSoftwareRestrictionUploader
- JamfUnusedPackageCleaner
- JamfUploaderJiraIssueCreator
- JamfUploaderSlacker
- JamfUploaderTeamsNotifier
- Object Reference