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.
Grab a PKG for Nudge from the Nudge releases on GitHub:
It is suggested to use the Nudge Suite PKG as it contains the application and Launch Agent for starting Nudge at login.
Upload the PKG file for Nudge to Jamf School so it can be deployed to macOS devices:
In Jamf School Navigate to Apps > Inventory.
Click the + Add App button and select the Add In-House macOS Package.
Drag and drop the Nudge Suite package into the pop up window to upload to Jamf School.
Create a script in Jamf School that we can use to write a JSON configuration to our devices:
In Jamf School navigate to Scripts and click + Create New Script.
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.
Set your script type to Bash.
Optional: Set a description for the script.
Set When to run to Just once.
Scripts will always re-run whenever the contents are updated.
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, so2024-07-27T00:00:00Z
is actually 7:00 PM on 07/26 in Minneapolis.
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
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.
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:
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 requiredInstallationDate
and 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:
The official Nudge Wiki on the GitHub
The #nudge channel in the macadmins slack
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: