Macをゼロタッチキッティング化してみる(前編)

お久しぶりです。
技術本部インフラストラクチャーDivで業務サポート&システムの検証・導入をしている岡田です。

前回の記事で続きを書くと言いましたが・・・すみません・・・書いてません・・・

なので、今回は前回の記事とは違う内容で最後まで書き切りたいと思っております。
これは「制約と契約」です!心臓に杭を打ち込みました!(HxH)

さて、今回の記事はMacのゼロタッチキッティングについて書いていこうかと思います。

背景

現在、自分が所属している部署では様々な業務を行っております。
PC作成、入社受け入れ準備、備品管理、SaaS管理、ヘルプデスク業務、サービスの導入、検証、調査、調整 etc …

昨今、在宅ワークが進みつつある中で
自分の所属部署ではどうしてもオフィスに出社する必要があります。

そして、出社して最も手が掛かるのは・・・そう!!PC作成です!!(同じ職種の方はどうでしょうか?)

以前は片手間かつオフィス内で完結した作業でしたが、現状だとそうではありません。

そう!作って発送するという手順が出てしまい、郵送が遅れない為にも日夜格闘している訳です!

この現状を打破する為にPC作成作業を自動化してメンバーの負担を減らしていこうと考えた訳です!

なお、理想の流れとしては

OSを入れ直したMacを郵送 → ユーザがPCの電源を入れる → 自動で初期設定が開始 → ユーザがすぐに業務に取り組める → わーい😃

・・・すばらしい(嬉涙)

この理想的な環境を実現したいですね!

本記事では、ゼロタッチキッティング導入で分かった事&セッティング方法について備忘録的な形で記事にしていきます。

まだゼロタッチキッティング化を出来てない方がいらっしゃれば、本記事でちょっとでもお助けが出来るような内容にしていきたいです!

ゼロタッチキッティングに必要なツール

では早速ですが、取り組んで行きましょうか!

さて、自動化(以下、ゼロタッチ)を実現させるには以下のシステムが必要となります。

JamfProとJamfConnectは有償のソリューションなので、まずはこちらの購入をお願いします。mm

※本記事では、JamfPro導入を前提にお話をさせていただきます。
また、JamfConnectの設定に関しては本記事では省略させていただきます。

DEPNotifyを導入してみよう!

さてさて、まずはゼロタッチを実現するにはどうしたらいいのか・・・?
ふむ・・・どうやら【DEPNotify】を使うのが主流らしいですね!

このツールはJamfProのポリシーにトリガーを設定させておいて
指定された順番にポリシーを発動させていくというツールっぽいですね!

これは便利そうだ!早速使っていきましょう!

DEPNotifyは以下のURLからダウンロードできます
https://files.nomad.menu/DEPNotify.pkg

pkgをダウンロードしたら次は、DEPNotifyを動かす為のshをダウンロードしましょう
https://github.com/jamf/DEPNotify-Starter/blob/master/depNotify.sh

素材は一旦揃いましたので

編集作業の前にダウンロードしたdepNotify.shをJamfPro上の
【設定】→【スクリプト】で新規登録してあげましょう。

スクリプト名は例として【DepNotify】で登録してください

また、ダウンロードしたpkgファイルは

【設定】→【パッケージ】→【新規】で登録してあげましょう

では、本アプリ(DepNotiy)のチューニングをしていきましょう!

早く検証を開始したい場合は①②③だけ設定をしてしまって残りは後でも大丈夫です!

① 42行目 テストモード or 本番モードの選択

TESTING_MODE=false # Set variable to true or false

こちらは、テストモード or 本番モードの設定を変更する事ができます。
※テストモードのままでも大丈夫ですが、テスト環境を既に作っているのであれば、実際の挙動に合わせた「false」でも大丈夫だと思います。

筆者は「false」にしました。

② 48行目 フルスクリーンモードを有効にするかどうか

 FULLSCREEN=false # Set variable to true or false

こちらは、キッティング中にユーザには何も触らせないぞ!っという方でしたら「true」でも良いかもしれません
ちなみに筆者は、「false」に設定をしました。

③ 154行目 適用するポリシーとトリガーを記述します。※ここが今回のコアになる部分です!

 POLICY_ARRAY=(
  "Chromeをインストール,Chrome"
)

例:
PC名を変更 → DEPNotify上に表示させるメッセージ
PCNameSET → ポリシーを実行させるトリガー(JamfProのGeneralで設定します)

※トリガーについては後で、解説させていただきます。

次にDEPNotifyで表示させるメッセージを変更していきましょう

④ 60行目 アプリ上で表示されるメッセージを設定できます。

BANNER_TITLE="ようこそXXXへ!"

↓がイメージです。

⑤ 63行目 !アイコンを押すと表示されるメッセージ

SUPPORT_CONTACT_DETAILS="分からない事があれば管理部署へ連絡してください"

⑥ 68行目 最初に表示されるメッセージを設定できます。

MAIN_TEXT='Macを設定中です。 \n ちょっと待っててね'

⑦ 71行目 ポリシーを開始する際に表示させるメッセージ

INITAL_START_STATUS="設定を開始します!"

⑧ 73行目 ポリシーが全て完了した際に表示させるメッセージ

INSTALL_COMPLETE_TEXT="設定が完了!"

一旦ここで、DEPNotifyのshの設定は完了です!

次に適用させるポリシーを作成していきます。

ソフトウェアをインストールする

ソフトウェアをインストールする方法は幾つかあります。

  1. JamfComposerを利用してパッケージ化
  2. JamfProのApp機能を利用する
  3. 「Installomator」を利用する

今回は3の「Installomator」の利用をしてみます!
この「Installomator」は指定したアプリケーションを
公式サイトから自動的に最新クライアントをダウンロードしてインストールしてくれるという超優れモノです!

対応するアプリケーションのリストはここを参照してください!
https://github.com/Installomator/Installomator/blob/main/Labels.txt

では、早速実装してみましょう!
Installomatorは下記のURLから進んでいただき
「Installomator.sh」をダウンロードしていただき、JamfProのスクリプトに登録してください

https://marketplace.jamf.com/details/installomator

スクリプト名【softwareInstall_Chrome】

まずは、デバックモードを無効化しましょう
28行目のDEBUG=1をDEBUG=0に変更する。

DEGUB=0

スクリプト側の編集は以上です。では次にポリシーを作成していきます。

設定箇所 設定内容
General 好きな名前を登録してください
カスタム カスタムイベント発生時 Chrome
実行頻度 Ongoin
スクリプト softwareInstall_Chrome
パラメータ 4 googlechrome
Scope 検証端末

※パラメータにダウンロードしたいソフトウェアを指定します。

以上でソフトウェアをインストールするポリシーの作成は完成です!

DEPNotifyのポリシーを作成

DEPNotifyを配布する為のポリシーを作成します。
ですが、その前に重要なスクリプトを一つ作成しておきます。

下記のコードをコピーしてスクリプトに登録しておいてください

スクリプト名【MacM1-Rosetta_Install】

sudo softwareupdate --install-rosetta --agree-to-license

こちらは、M1 or M2 搭載のMacにRosetta2をインストールするコマンドとなります。
Rosetta2がインストールされていないと、キッティングが動作しない場合がございますので
DEPNotifyをインストールする前に有効化しておきます。

DEPNotifyのポリシーを作成します。

設定箇所 設定内容
General 好きな名前を登録してください
カスタム カスタムイベント発生時 登録完了
実行頻度 Ongoin
スクリプト(After) DepNotify
スクリプト(Before) MacM1-Rosetta_Install
パッケージ DEPNotify.pkg
Scope 検証端末

上記のポリシーが作成できましたら、一旦最低限のポリシーの設定は完了です!

他にも色々と記述したい物があるのですが、ちょっと長くなってしまうので
前編はここまでとさせていただきます!
続きは近い内に投稿させていただきますので、ご興味ある方はしばしお待ちください!

ご参考にさせていただいたサイト
https://dev.classmethod.jp/articles/jamf_dep-notify_configuration/
https://kenchan0130.github.io/post/2020-10-12-1
https://community.jamf.com/