ようこそ Setup Your Mac
先日のブログで当社エンジニア中尾が紹介した Setup Your Mac の具体的な設定、使い方について書きたいと思います。
Setup Your Mac は、 swiftDialog と Jamf Pro ポリシーのカスタムトリガーを活用して自動デバイス登録後の構成、キッティングを簡素化し、エンドユーザが登録後に Mac のセットアップをユーザ自身で完了できるようにすることを目的としています。
ツールが生まれた理由
Jamf Pro で自動デバイス登録後の各種ソフトの配信に DEPNotify をよく使用されていると思います。ですが、DEPNotify はメンテナンスがほぼ2年間ぐらい行われておらず。また、Jamf Pro の Product Issue(PI100009 - PI-004775)もあり、特定の環境下で ポリシーは「登録完了」のトリガーで動作しない問題もあり、 Dan K. Snelson さんは Setup Your Mac プロジェクトをはじめました。
Setup Your Mac を試してみましょう
実装する前に、検証端末で Setup Your Mac の運用を試すには、下記の方法で検証してみてください。
1. ターミナルアプリを開く
2. 次のコマンドにて、Setup Your Mac の最新バージョンをダウンロードしてください。
curl -o ~/Downloads/Setup-Your-Mac-via-Dialog-reference.bash https://raw.githubusercontent.com/dan-snelson/Setup-Your-Mac/main/Setup-Your-Mac-via-Dialog.bash
スクリプトは Setup-Your-Mac-via-Dialog-reference.bash としてダウンロードフォルダーに保存されます。
3. Setup Your Mac スクリプトをrootで実行します。
sudo bash ~/Downloads/Setup-Your-Mac-via-Dialog-reference.bash
最初の実行で swiftDialog のインストールが行います。
その後 Setup Your Mac が起動します。
もちろんログも取れています。
デフォルトで /var/log/org.churchofjesuschrist.log 名で保存されます。
ターミナルアプリから実行するとログの項目はそちらにも表示されます。
デフォルトの 「ようこそ」ダイアログ
「ようこそ」ダイアログとは、ユーザに最初に表示される画面の事です。
「ようこそ」ダイアログの入力フィールドは、一つの welcomeJSON 変数によって制御され、必要に応じてフィールドの追加、変更、または削除できます。
(スクリプトのソース コードは非常に長いので、このブログ投稿をこれ以上長くしない為に、使用しているコード スニペットに関する GitHub リンクを追加しました。コードを確認しながらブログ投稿と進めてください。)
「Configuration」のところで、実行したい Jamf Pro ポリシーの種類を選択することはできます。(上記の写真を参考にしてください)
例:「Required」の場合、業務で必要なソフトのインストールまた設定だけを行います。
「ようこそ」ダイアログのコード スニペット (現在478-526ラインの間)
こちらの welcomeJSON 内にあるものを日本語に変更すると、エラーが発生しますので、ご注意ください。
ユーザ入力の処理はスクリプトの後半で処理され、追加のカスタマイズが必要になる可能性が高いため、本番環境にデプロイする前に徹底的にテストする必要があります。(特にコード内で「UNTESTED, UNSUPPORTED "YOYO" EXAMPLE」書いてあるところです。)
ユーザ入力の処理の辺り (現在2517-2759ラインの間)
ユーザ情報を入力する必要なければ、「video」また「false」に設定することも可能です。「video」の場合、ユーザに対象videoが表示されます。「false」の場合は、すぐインストールが始まります。
※これらの設定を Jamf Pro 経由でスクリプトパラメータとして設定します。
テスト用の場合、コード内で以下のいずれかに変更することでテストできます。
welcomeDialog="${6:-"userInput"}"
welcomeDialog="${6:-"video"}"
welcomeDialog="${6:-"false"}"
デフォルトの 「Setup Your Mac」ダイアログ
「ようこそ」ダイアログ後に「Setup Your Mac」ダイアログが現れます。
実行される Jamf Pro ポリシーのリストは、4 つの JSON 変数のいずれかによって制御されます。
・Required
・Recommended
・Complete
・Catch-all
※ 「ようこそ」ダイアログを表示しない場合、或いはユーザ情報の入力を目指さない時「Catch-all」のオプションは自動的に走ります。
コード内で現在721-1285ラインの間です。
説明をより分かりやすくする為に、変更した「Required」のコードスニペットを入れておきます。
"Required" )
policyJSON='
{
"steps": [
{
"listitem": "Rosetta",
"icon": "8bac19160fabb0c8e7bac97b37b51d2ac8f38b7100b6357642d9505645d37b52",
"progresstext": "Rosetta enables a Mac with Apple silicon to use apps built for a Mac with an Intel processor.",
"trigger_list": [
{
"trigger": "sym-rosetta",
"validation": "None"
},
{
"trigger": "rosetta",
"validation": "Local"
}
]
},
{
"listitem": "FileVault Disk Encryption",
"icon": "f9ba35bd55488783456d64ec73372f029560531ca10dfa0e8154a46d7732b913",
"progresstext": "FileVault is built-in to macOS and provides full-disk encryption to help prevent unauthorized access to your Mac.",
"trigger_list": [
{
"trigger": "sym-filevault2",
"validation": "None"
},
{
"trigger": "filevault",
"validation": "Local"
}
]
},
{
"listitem": "Google Chrome",
"icon": "c8f42f4c1ad3906610633f4e24701b65eb1885a724936dd0064316264b6a496a",
"progresstext": "Google Chrome is a browser that combines a minimal design with sophisticated technology to make the Web faster.",
"trigger_list": [
{
"trigger": "sym-googlechrome",
"validation": "/Applications/Google Chrome.app/Contents/Info.plist"
}
]
},
{
"listitem": "Slack",
"icon": "dea00783f8cd1028456b3b872747268751cf349a0db226fea5465c55450d26d8",
"progresstext": "Slack is an instant messaging program",
"trigger_list": [
{
"trigger": "sym-slack",
"validation": "/Applications/Slack.app/Contents/Info.plist"
}
]
},
{
"listitem": "Computer Inventory",
"icon": "90958d0e1f8f8287a86a1198d21cded84eeea44886df2b3357d909fe2e6f1296",
"progresstext": "A listing of your Mac’s apps and settings — its inventory — is sent automatically to the Jamf Pro server daily.",
"trigger_list": [
{
"trigger": "recon",
"validation": "None"
}
]
}
]
}
'
;;
スクリプトのカスタマイズ
必要に応じ Jamf Pro ポリシーにカスタム イベントを追加後に、お気に入りのエディタにて実行したい環境に合わせて ~/Downloads/Setup-Your-Mac-via-Dialog-reference.bash を変更しましょう。
Jamf Proでの構築
Setup Your Macコードの変更後に、Jamf Pro のサーバで以下を参考に設定してみてください。
カスタマイズしたスクリプトのアップロード
カスタマイズしたスクリプトを Jamf Pro サーバに追加します
オプション > Parameter Labels に次を指定します。
パラメータ 4:ログの場所 [ /var/log/org.magichat.log ] (組織のクライアント側でログのデフォルト場所)
パラメータ 5:デバッグモード [ verbose (default) | true | false ]
パラメータ 6:ようこそダイアログ [ userInput (default) | video | false ]
パラメータ 7:完了後のアクション [ wait | sleep (with seconds) | Shut Down | Shut Down Attended | Shut Down Confirm | Restart | Restart Attended (default) | Restart Confirm | Log Out | Log Out Attended | Log Out Confirm ]
パラメータ 8:必要最低限のOSビルド [ disabled (default) | 22D ] (macOS 13.2.x の場合は「22D」を使用)
パラメータ 9:古い OSでの対策 [ /System/Library/CoreServices/Software Update.app (default) | jamfselfservice://content?entity=policy&id=117&action=view ](OSのアップグレード用の Jamf Pro Self Service ポリシー ID等)
保存
以下の二つのスクショを参考にしてください。
Setup Your Mac用のポリシー作成
新規ポリシーの作成
表示名: Enrollment: Setup Your Mac等
実行頻度:Ongoing
Scriptsペイロードでアップロードしたスクリプトを追加する
パラメータ値の入力 (以下の写真を参考にしてください。)
Scopeを設定する
「Self Service でポリシーを使用可能にする」にチェックを入れる
必要に応じてアイコン、表示名、説明を設定する
保存
これで Setup Your Mac のセットアップは完了となります。
ユーザは Self Service 経由ですぐ使えるようになります。
まとめ
最初は少し難しいように思えるかもしれませんが、コードを検証し試してみて思ったことは、Setup Your Mac は DEP Notify の代わりになる素晴らしいツールだと言うことです。
Setup Your Mac は自動デバイス登録後の構成を支援し、端末保持者にパーフェクトなユーザ 体験を提供することが出来ます。
最後に、発明者 Dan K. Snelson さんのMovieをご覧ください。
Setup Your Mac のワークフローを通しで見ることが出来ます。
以上、 エンジニアのメリンダが担当いたしました。
最後まで読んでいただき、ありがとうございました。
ご参考
・Dan K. Snelsonのブログポスト
・Setup Your Macのリポジトリ
・Setup Your Macのスクリプト
・swiftDialogのリポジトリ