NudgeをJamfProで配布してユーザーにMacのOSアップデートをしてもらう
macOS14が出たとき、自社ユーザーに貸与しているMacのバージョン管理が抜けていた事に気付きました。JamfProの管理画面で管理下にある端末の状態を確認したら、まだmacOS11とか12のままの人がチラホラ。
脆弱性などの問題やUIの違いによって一貫したサポートができなくなると嫌なので、一定のバージョン以下のMacはアップデートを促すようにしたいなあと思ったとき、Nudgeというツールを教えてもらったので設定してみました。
Nudgeについて
NudgeはmacOSのアップデートの通知を行うことが出来るアプリです。JamfProで構成プロファイルとポリシーを作成・配布して利用します。
Nudgeを配布すると、アップデートを促す旨の通知画面が表示されるようになります。アップデート通知画面のメッセージカスタマイズやアップデートの延長期限設定、macOS〇〇以下のコンピューターにのみ通知する、といった設定が可能です。
基本的には通知するバージョンの指定(macOS〇〇以下等)とアップデートの延長可能期限だけ指定すれば利用できますが、それだけだとNudgeの通知画面がオンラインMTG中だろうが問答無用で強制最前面で出てきてしまうため、カメラの起動中や特定のアプリの起動中はNudgeによる通知をしないという通知の許可設定などの設定も実質必須です。
JamfProでの設定
Nudgeの配布はJamfProのポリシーで、通知に関するカスタマイズは構成プロファイルから行います。基本的な構成の部分は下記の記事を参照させていただきました。
基本設定に追加で、カメラの利用中及び画面共有中はNudgeによる通知をしない設定を加えておきます。
カメラ使用中は通知しない設定
acceptableCameraUsage:true
画面共有中は通知しない設定
acceptableScreenSharingUsage:true
また、zoomなど特定のアプリ起動中はNudgeによる通知をしないように設定することも可能です。設定するには、対象アプリのBundleIDを拾ってきて「acceptableApplicationBundleIDs」の値に設定します。
BundleIDについて
BundleIDはMacOSやiOSアプリ固有のIDです。各アプリ内にあるplistに記載されています。BundleIDを確認するには、対象のアプリを起動した状態でターミナルからコマンドを叩いて確認します。
例えばzoomアプリのBundleIDを確認したい場合は、zoomアプリを起動してからターミナルで下記のコマンドを叩きます。
lsappinfo info -only bundleid "zoom.us"
ここで確認したBundleIDをNudgeの「acceptableApplicationBundleIDs」の値に設定しておくことで、対象のアプリ起動時はNudgeによる通知が行われないようになります。
通知のカスタマイズ
Nudgeは通知画面のロゴやテキストをカスタマイズすることができます。
テキストをカスタマイズする
テキストをカスタマイズするには、まず構成プロファイルの「UserInterface」と「updateElements」を「Configured」にします。
すると各設定項目が表示されるので、デフォルトから変更したい項目を適宜変更します。どの項目がどの部分に当たるかは、こちらのPDFが参考になります。
通知画面には自社名が入っていないと、通知が届いたユーザーが指示に従っても良いかどうかが分からなくなってしまうので、自社名を入れておくのが良いかと思います。
ロゴを変更する
Nudgeの通知画面には、デフォルトだとアップルのロゴマークが表示されます。ひと手間かかりますが、これを任意の画像に差し替えることも可能です。自社のロゴとかが良いでしょう。
画像を差し替えるには、まずJamfProで画像配布用のポリシーを作成し、ロゴとして利用したい画像を各端末に配布しておく必要があります。そして、JamfProで画像を配布するには画像をpkgに変換する必要があります。
pkgファイルの作り方が分からなかったので調べてみると、どうやらJamfProのComposerというツールを利用して行えるようです(それ以外の手段もあるっぽいですが、これが一番簡単そうでした)。
Composerは、Jamf Accountのサイトからダウンロードすることができます
Composerが準備できたら、pkgにしたい画像を/private/tmpに配置します。画像を配置するディレクトリはどこでも良いのですが、各端末への展開時、Composerでpkgにした際に配置していたディレクトリと同じディレクトリに画像が配置されるようなので、どの端末でも必ず存在するディレクトリに配置するのが望ましいです。
画像を配置したら、Composerを開きます。まず新規ファイル作成ウィザードが開始されますが、一旦キャンセルします。次にpkgにしたい画像をComposerをのウインドウのサイドバーの部分にドラッグアンドドロップします。
ファイルの配置ディレクトリ構造が表示されるため、ディレクトリを開いていって画像を表示し、「Owner」の値を「root」にしておきます。
Composerの上部メニュー「Build as PKG」を押します。pkgファイルが吐き出されるので、JamfProでポリシーを作成してこのpkg配布します。
端末にポリシーが適用されると、/private/tmp/(pkgにする前の画像が配置されていたディレクトリ)に画像(logomark.png)が配置されます。
あとはNudgeの構成プロファイルで「iconDarkPath」と「iconLightPath」に「/private/tmp/logomark.png」と設定しておけば、Nudgeのロゴが配布したロゴに変わります。
Nudgeによる通知をテストしてみる
一通りNudgeの設定が完了したら、通知対象をmacOS13以下の端末としてOS13の端末で挙動をテストしてみます。Nudge配布後少し待つと、Nudgeによる通知が行われました。ロゴもテキストも、カスタマイズどおりになっています。
スムーズにテストするためのコマンド
ユーザーがNudgeによる通知を受け取った際、◯日後といった形で次回の通知までの期間を延期することができます。ただ、テストの際に次回の通知を1日後としてしまった場合で、すぐに通知の再テストを行いたい場合もあります。
その場合は、下記のコマンドをターミナルで実行することで延期期間をリセットすることが可能です。
defaults delete ~/Library/Preferences/com.github.macadmins.Nudge.plist
リセット後、下記コマンドを叩くとNudgeによる通知が即実行可能です。
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge
Nudgeで定期的なアップデートを習慣に
一連の設定作業でNudgeの設定方法について概ね理解できました。とりあえず現時点ではmacOS11と12の端末に対してOS13へのアップデートを促す形で利用することにしましたが、今後も最新のメジャーバージョンとの数字が2以上開く場合には、同様にNudgeを用いた通知を行う運用にしたいと思っています。
Nudgeが行うのはあくまで通知
ただ、Nudgeが行うのはあくまで通知だけなので、アップデートするかはユーザーに委ねられます。そのほうが都合が良い場合もありますが、だらだらと延期されるのも困る場合もあるかと思います。
そういった場合、アップデートまでの期限を設定しておくことも可能です。設定した期限が来ると、アップデートするまでNudgeのウインドウが強制的に前面に出た状態になります。
ちなみに自社の運用では、あえて期限は数年先にしています。意図しないタイミングで業務を止めてしまう可能性があるので。
イマイチなところ
通知テキストのカスタマイズができるのですが、構成プロファイルの入力箇所がテキストエリアではなく、長文でも1行のテキストフィールドに入力する必要があるので細かな修正が面倒です。また、改行箇所は改行コードで指定する必要があります。
それ以外は概ね必要な要件は満たしていたので、とりあえず満足です。MacのOSバージョン管理で悩んでいる方はぜひ試してみてください。