macOSのアップデート制御にNudgeを使ってみました。
日本語記事が少なかったということもあり、せっかくなので書いてみます。
基本的には公式Wikiのオプション2の通り実施します。ローカルでテストすることを推奨されていますが、検証機1台を利用してポリシー・構成プロファイルのスコープをその1台に適用したほうが手っ取り早く、設定を理解するのに役に立つと思います。
Nudge Suite パッケージをアップロードする
GithubのReleasesページから最新版のNudge_Suite.pkgをダウンロードします。
JamfProのコンピュータの管理 > パッケージからダウンロードしたpkgファイルをアップロードします。
スマートコンピュータグループを作成する
Wikiに記載のある通りにルールを作成します。
Nudgeをインストールさせる対象を抽出するグループになります。内容は、(Nudgeがインストールされているが、最新版でない)または(Nudgeがインストールされておらず、macOSがv11.0.1以上)となっています。
And/OR | クライテリア | オペレータ | 値 | ||
( | Application Title | is | Nudge.app | ||
and | Application Version | is not | 1.1.11.81465 | ) | |
or | ( | Application Title | does not have | Nudge.app | |
and | Operating System Version | greater than or equal | 11.0.1 | ) |
このグループは本番として全社に展開するタイミングで利用しますので、いったん放置します。
構成プロファイルを追加する
まずは最低限動作させるための設定を行います。
一般
- 名称:Nudge検証用
- レベル:Computer Level
- 配布方法:Install Automatically
アプリケーションとカスタム設定 > 外部アプリケーション
- ソース:カスタムスキーマ
- 環境設定ドメイン:com.github.macadmins.Nudge
- カスタムスキーマを追加 → こちらを貼り付けて保存
- 環境設定ドメインのプロパティ
- osVersionRequirements
- requiredInstallationDate
- 2030-01-01T00:00:00Z (今日以降の適当な日付)
- requiredMinimumOSVersion
- 13.4.1
- requiredInstallationDate
- osVersionRequirements
Scopeに検証機のみを追加して保存します。
ポリシーを作成する
Nudgeをインストールさせるためのポリシーを作成します。
トリガー:Recurring Check-in
実行頻度:Ongoing
パッケージで先ほどアップロードしたNudge_Suiteをアクションinstallにて設定し、Scopeで検証機を指定します。インストールされたことを確認できたら検証に進みましょう!
検証方法
Nudgeを手動で開く
本番環境(構成プロファイルを読み取って実際の設定値で動作します)
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge
デモモードで開く
言語ロケールに合わせてデモモードが起動します。操作は実際の環境に影響しません。
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge -demo-mode
デモモード(シンプル)
デモモード(シンプルモード)が起動します。
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge -demo-mode -simple-mode
すでに検証機が最新版なので検証できない
requiredMinimumOSVersionは存在しないバージョンも入力でき、判定も行われる(はず)なので、適当に13.9.1などを設定すれば起動します。
ユーザが操作した延期動作をリセットする場合
検証含め、実際にNudgeが起動した際に延期操作を行った場合、延期した時間まで起動しなくなってしまいます。それをリセットする場合に利用します。
自分は、試しに1日延期してNudgeが起動しなくなって数時間さまよってこのコマンドにたどり着きました。Nudgeアプリを削除しても延期操作はリセットされませんのでご注意ください。
defaults delete ~/Library/Preferences/com.github.macadmins.Nudge.plist
トラブル対応
Nudgeが起動しない場合
- 延期操作していないか?
延期したらその時間まで起動しなくなります。延期操作をリセットしたい場合は↑のコマンドを実行しましょう。
- 最低限必要な設定を構成プロファイルで設定しているか?
インストール期日と要求macOSバージョンの最低2つを設定しないと起動しません。構成プロファイル > 外部アプリケーション > 環境設定ドメインのプロパティで設定しましょう。
requiredInstallationDate
requiredMinimumOSVersion
- 要求しているバージョンになってしまっていないか?
requiredMinimumOSVersionで設定したバージョン以上の場合、当然ですが起動しません。
userInterfaceのupdateElementを変更しても文字が更新されない
言語ロケールを設定しないとNudgeが言語を認識してくれません。必ず、updateElement > _languageを構成し、「ja」を設定する必要があります。
informationButtonTextが変更されない
Nudge画面左下のMore Info(詳細情報)ボタンは、aboutUpdateURLも合わせて設定しないと文字が表示されません。
作りこむ
作りこむとは言っていますが、最低限の設定で実装することを公式が推奨していますので、気合いれて細かいところまで手を加えなくて大丈夫です。
UIを設定する
userInterface > updateElementで設定します
画像を配布する
会社のロゴや自社の手順画像を利用したい場合は、Jamf Composerを使って画像を.pkgファイル化して各デバイスに配布し、iconPathやscreenShotPathでパスを指定すればOKです。
バージョンごとに要求バージョンを変更する
BigSurユーザは、11.7.5、Montereyユーザは、12.6.4、Venturaユーザは、13.3を、というように現在のバージョンに応じて要求することができます。
osVersionRequirementで複数定義するだけです。targetOSVersionsRuleにバージョンを入力すれば、そのバージョンを持つデバイスに対してその他項目が反映されるようになります。
特定アプリ使用時にはアクティブ化状態で表示しない
特に設定しない場合、30分おきにドーンと最前面に更新を促す画面が表示されます。しかもこのウインドウは移動できないのでめちゃくちゃ邪魔です(更新させるのにはもってこい)。Zoom会議中など、いきなり出てこられては困るような場面があると思いますので、そうならないようにアプリレベルでアクティブ状態で表示されないようにできます。
acceptableApplicationBundleIDsでバンドルIDを設定するだけです。以下は例です。
us.zoom.xos
com.microsoft.Powerpoint
com.cisco.webexmeetingsapp
com.microsoft.skype.teams
カメラまたは画面共有中はアクティブ状態で表示しない
カメラ使用中:acceptableCameraUsage
画面共有使用中:acceptableScreenSharingUsage
新しいデバイスの場合、猶予期間を持たす
allowGracePeriods
Nudgeが新規インストールされてから起動までを遅延させる
gracePeriodLaunchDelay
全社に適用
作成したスマートグループをスコープにすればOKです。