Skip to main content

Jamf School and Nudge for macOS updates

Updated this week

Description

Nudge is a tool IT admins can use to help keep their fleet of macOS devices up to date by nudging their end users to perform the update at a time that is less disruptive to their work. Many IT teams enjoy this option as it means that they don't have to find a time where they can send out a command to large quantity of device while still avoiding disruptions to the end users.

You configure Nudge with your desired minimum OS version, set a deadline, and configure how persistent you want Nudge to be until the update is complete.

For a lot more information on Nudge, how it works and how customize its configuration, please check out the Nudge GitHub page.

NOTE: While Nudge is deployed using your MDM, its functionality is unrelated to MDM. Once the software is installed and configured it takes care of what it is designed to do locally on the device.

Deploying Nudge for macOS Updates

A. Minimum Configuration and Deployment

NOTE: We will use JSON for this Nudge configuration, but know that Nudge can also be configured with a configuration profile.

  1. Grab a PKG for Nudge from the Nudge releases on GitHub:

  2. Upload the PKG file for Nudge to Jamf School so it can be deployed to macOS devices:

    1. In Jamf School Navigate to Apps > Inventory.

    2. Click the + Add App button and select the Add In-House macOS Package.

    3. Drag and drop the Nudge Suite package into the pop up window to upload to Jamf School.

  3. Create a script in Jamf School that we can use to write a JSON configuration to our devices:

    1. In Jamf School navigate to Scripts and click + Create New Script.

    2. Give your script a name and set your execution

      • We are using "Create Nudge Config" in this example but choose something that makes sense to you.

    3. Set your script type to Bash.

    4. Optional: Set a description for the script.

    5. Set When to run to Just once.

      • Scripts will always re-run whenever the contents are updated.

    6. Use the bash script provided below to create the most basic Nudge JSON configuration file:

      • Adjust both of the required keys to your desired values:

      • Keep in mind the that requiredInstallationDate uses UTC for its timezone, so 2024-07-27T00:00:00Z is actually 7:00 PM on 07/26 in Minneapolis.

    7. Save your changes to the script.

      #!/bin/bash # Create the JSON config file # Minimum keys are provided in this config, see Nudge Documenation for an advance JSON configuration: # https://github.com/macadmins/nudge/blob/main/Example%20Assets/com.github.macadmins.Nudge.json cat << EOF > /Library/Preferences/com.github.macadmins.Nudge.json { "osVersionRequirements": [ { "requiredInstallationDate": "2024-07-27T00:00:00Z", "requiredMinimumOSVersion": "14.5", } ] } EOF
  4. Scope both the the Nudge Suite PKG and the script to devices.

  • In this example we will use a smart group created at the top level and shared with all sub locations.

  • The criteria is Operating System equals macOS without providing any minimum or maximum macOS version so that all macOS devices are captured by the group.

  • NOTE: Like any major configuration or deployment test thoroughly on a subset a devices to make sure behavior is as desired before deploying to product devices at scale.

This photo shows the smart group criteria.

B. Post Installation Checks

Once your Nudge package has installed and your script has executed you can check the /Applications/Utilities directory for the Nudge application. You can also run the following terminal command to make sure that Nudge is correctly seeing your JSON configuration file: /Applications/Utilities/Nudge.app/Contents/MacOS/Nudge -print-json-config. If configured correctly you should get some terminal out put that looks like this:

This photo shows the confirm nudge configuration.

C. Updating Your Config

Once you reach your deadline you will likely want to set a new deadline with a new minimum required macOS version. With this deployment doing so is simple, all you need to do is navigate to your script in Jamf School and update the JSON keys for requiredInstallationDateand requiredMinimumOSVersion with the new desired value and save the changes to the script.

The script will re-execute on all devices since there was a change to contents of the script. Device will now have their new configuration JSON configuration file and the new deadline and minimum macOS version will be enforced.

D. Final Notes

There are many great resources for learning more about Nudge, here are a couple to get you started:

With macOS Monterey 12.3 came the ability for standard users on macOS devices to perform upgrades through Software Updates in system settings (Delta upgrades). The default nature of Nudge is to download the Install Assistant application when performing an upgrade but standard uses will not be able to run that upgrade. The following blog has some great configurations to use if it is important that your standard users can perform upgrades on their own:



Did this answer your question?