-
-
Notifications
You must be signed in to change notification settings - Fork 44
Home
JamfUploader is a 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.
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 | API type | Action |
|---|---|---|---|
JamfAccountUploader |
Accounts | Classic | Create/Update |
JamfAPIRoleUploader |
API Roles | Pro | Create/Update |
JamfAPIClientUploader |
API Clients | Pro | Create/Update |
JamfCategoryUploader |
Categories | Pro | Create/Update |
JamfComputerProfileUploader |
Computer Configuration Profiles | Classic | Create/Update |
JamfComputerGroupUploader |
Computer Groups (Smart and Static) | Classic | Create/Update |
JamfComputerGroupDeleter |
Computer Groups (Smart and Static) | Classic | Delete |
JamfComputerPreStageUploader |
Computer PreStage Enrollments | Pro | Create/Update |
JamfComputerStaticGroupUploader |
Static Computer Groups | Pro | Create/Update |
JamfDockItemUploader |
Dock Items | Pro | Create/Update |
JamfExtensionAttributeUploader |
Extension Attributes | Pro | Create/Update |
JamfExtensionAttributePopupChoiceAdjuster |
Extension Attributes | Pro | Add/remove choices from a pop-up-style EA |
JamfIconUploader |
Icons | Pro | Upload/Replace |
JamfMacAppUploader |
Mac Applications (VPP apps) | Classic | Update/Clone |
JamfMobileDeviceAppUploader |
Mobile Device Applications (VPP apps) | Classic | Update/Clone |
JamfMobileDeviceProfileUploader |
Mobile Device Configuration Profiles | Classic | Create/Update |
JamfMSUPlanUploader |
Managed Software Update Plans | Pro | Create |
JamfObjectUploader |
Many API object types | Classic, Pro | Create/Update |
JamfObjectDeleter |
Many API object types | Classic, Pro | Delete |
JamfObjectReader |
Many API object types | Classic, Pro | 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. |
JamfObjectStateChanger |
Policies, Computer Extension Attributes, App Installers | Classic, Pro | Update |
JamfPackageUploader |
Packages | Pro | Upload/Replace and Create/Update metadata |
JamfPkgMetadataUploader |
Packages | Pro | Create/Update metadata without uploading a package |
JamfPackageCleaner |
Packages | Pro | Delete old packages |
JamfPatchChecker |
Patch Titles | Classic | Checks Patch Software Titles |
JamfPatchUploader |
Patch Policies | Classic | Create/Update |
JamfPolicyUploader |
Policies | Classic | Create/Update |
JamfPolicyLogFlusher |
Policies | Classic | Flushes policy logs |
JamfScopeAdjuster |
Any scopeable object type | - | Adjusts the scope of an XML object |
JamfScriptUploader |
Scripts | Pro | Create/Update |
JamfSoftwareRestrictionUploader |
Restricted Software | Classic | Create/Update |
JamfUnusedPackageCleaner |
Packages | Pro | Delete unused packages |
Note that although the Pro and Classic APIs are listed here, the Jamf Platform API can be used to interact with Pro and Classic endpoints.
Additionally, there are some processors used for associated tasks:
| Processor | Action |
|---|---|
AppStoreInfoProvider |
Get information about App Store apps |
ConvertGroupXMLtoJSON |
Convert an XML-based smart group template to JSON for use with the Jamf Pro API |
JamfUploaderJiraIssueCreator |
Create a Jira Issue for certain operations |
JamfUploaderSlacker |
Send notifications to a Slack channel for certain operations |
JamfUploaderTeamsNotifier |
Send notifications to a Microsoft Teams channel for certain operations |
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
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 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