Home - grahampugh/jamf-upload GitHub Wiki
JamfUploader
JamfUploader is a name given to a set of AutoPkg Processors designed to interact with the Jamf Pro APIs. Most (but not all) of these processors are concerned with uploading things to a Jamf Pro Server.
These may be added to AutoPkg recipes in sequence, to perform simple or complex workflows involving the Jamf Pro API.
Here's a current list of processors and their basic functions:
Processor | Object type | Action |
---|---|---|
JamfAccountUploader |
Accounts | Create/Update |
JamfAPIRoleUploader |
API Roles | Create/Update |
JamfApiClientUploader |
API Clients | Create/Update |
JamfCategoryUploader |
Categories | Create/Update |
JamfComputerProfileUploader |
Computer Configuration Profiles | Create/Update |
JamfComputerGroupUploader |
Computer Groups (Smart and Static) | Create/Update |
JamfDockItemUploader |
Dock Items | Create/Update |
JamfExtensionAttributeUploader |
Extension Attributes | Create/Update |
JamfExtensionAttributePopupChoiceAdjuster |
Extension Attributes | Add/remove choices from a pop-up-style EA |
JamfIconUploader |
Icons | Upload/Replace |
JamfMacAppUploader |
Mac Applications (VPP apps) | Update/Clone |
JamfMobileDeviceAppUploader |
Mobile Device Applications (VPP apps) | Update/Clone |
JamfMobileDeviceProfileUploader |
Mobile Device Configuration Profiles | Create/Update |
JamfObjectUploader |
Many API object types | Create/Update |
JamfObjectDeleter |
Many API object types | Delete |
JamfObjectReader |
Many API object types | Download the API object (XML or JSON). Profiles, Scripts and Script-Based Extension Attributes are also downloaded. Optionally, all objects of a specified type can be downloaded, or a list of all objects can be created. |
JamfPackageUploader |
Packages | Upload/Replace and Create/Update metadata |
JamfPkgMetadataUploader |
Packages | Create/Update metadata without uploading a package |
JamfPackageCleaner |
Packages | Delete old packages |
JamfPatchChecker |
Patch Titles | Checks Patch Software Titles |
JamfPatchUploader |
Patch Policies | Create/Update |
JamfPolicyUploader |
Policies | Create/Update |
JamfPolicyLogFlusher |
Policies | Flushes policy logs |
JamfScopeAdjuster |
Any scopeable object type | Adjusts the scope of an XML object |
JamfScriptUploader |
Scripts | Create/Update |
JamfSoftwareRestrictionUploader |
Restricted Software | Create/Update |
Additionally, there are two processors used for sending notifications, which are typically used as post-processors:
Processor | Action |
---|---|
JamfUploaderSlacker |
Send notifications to a Slack channel for certain operations |
JamfUploaderSlackerTeamsNotifier |
Send notifications to a Microsoft Teams channel for certain operations |
Note
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).
For more details, please consult the JamfUploader AutoPkg Processors wiki page
jamf-upload.sh Script
The 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 instrictions, please go to the jamf-upload.sh wiki page.
Resources
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.
- JamfScopeAdjuster – Fine-tune your automated deployments and say bye bye to scope creep!
Acknowledgements
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
JamfPatchUploader
andJamfDockItemUploader
processors. - @jc0b - contributed the
JamfUploaderTeamsNotifier
processor. - @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
JamfPackageCleaner
processor. - @neilmartin83 - contributed the
JamfScopeAdjuster
andJamfExtensionAttributePopupChoiceAdjuster
processors. - @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!
Additional Resources
Jamf API Tool
Please go to Jamf API Tool
Standalone upload scripts
Please go to Standalone Scripts.
The standalone scripts require a python 3 installation.
Note: the standalone jamf_X_uploader.py
scripts are no longer maintained.
Please see instructions for using the AutoPkg processors as standalone scripts by using the jamf-upload.sh
wrapper script, below. This will give equivalent functionality to the standalone scripts, without me having to maintain the standalone scripts in addition to the AutoPkg processors.