見出し画像

【Jamf Pro】 新ツール「Setup-Manager」 を使って Mac のセットアップをやってみる

こんにちは。今回は先日発表された Jamf の Setup-Manager というツールをご紹介したいと思います。


1. はじめに Setup-Managerとは

ひとことで言うと、Macのセットアップ時にセットアップ状況を可視化するツールです。
同じような機能をもつツールとして、以前弊社でもご紹介した Set Up Your Mac や DEP Notify 、Jamf Proの機能である macOS Onboarding 、その他Script等、様々なものがあります。

Setup-Manager には、セットアップ状況を可視化に関連する主な機能として以下のようなものがあります。

  • Jamf Proポリシーの実行

  • Installomator によるアプリケーションインストール

  • シェルスクリプトの実行
    例、systemsetup -settimezone のようなコマンド

  • ユーザ(デバイス)情報の入力

                     等

細かなところは、 Jamf社のブログ をご覧ください。

簡単に動作のイメージをお伝えすると、事前登録にSetup-Managerのインストールパッケージと、動作を定義する構成プロファイルを設定した状態で、端末のセットアップを開始して自動デバイス登録をすると、添付の画像のような進捗状況を表示してくれます。

進捗状況表示

2. 利用のための要件

公式サイトの Requirements を確認すると以下の記載がありましたが、それ以外の要件は特に無い様です。

  • macOS 12.0.0以降を使用していること

  • Jamf Pro または Jamf School を使用していること

3. 設定開始

次に設定方法についてお伝えします。
今回は、以下のような設定を行う例で実際に設定をしてみます。


<ユーザ入力項目>
 ・アセットタグ
 ・端末名
 ・利用者情報
 ・利用部署
<システム設定>
 ・タイムゾーンの設定
<インストールアプリ>
 ・Google Chrome
 ・Zoom
 ・Jamf Connect


やることは主に以下の3つです。

  1.  Setup ManagerのインストーラpkgをJamf Proにアップロードする。

  2. 環境設定ドメイン 「com.jamf.setupmanager」 でカスタム構成プロファイルを作成する。プロファイルの内容に関するドキュメントはこちら

  3. (Jamf Connectを展開する場合は)Jamf Connect展開設定を作成する

  4. 事前登録 に pkg と構成プロファイルを追加する。

それでは、順番に見ていきましょう!



1. Setup ManagerのインストーラpkgをJamf Proにアップロードする

1−1. Githubのリリースから最新版のSetup Managerのインストーラpkgをダウンロードする。
https://github.com/Jamf-Concepts/Setup-Manager/releases
(2024/9/1現在の最新のファイル名は  Setup.Manager.1.0-368.pkg でした )

1-2. ダウンロードしたファイルをJamf Proのパッケージとしてアップロードする。
設定>コンピュータ管理>パッケージ からアップロードします。
※カテゴリは任意で設定してください(例では「Setup-Manager」というカテゴリを作りました。)

パッケージのアップロード


2. 環境設定ドメイン 「com.jamf.setupmanager」 でカスタム構成プロファイルを作成する

2-1. カスタムプロファイル設定用のplistファイルを作成する。
ここが一番のポイントです。
今回は サンプルファイル を基に下記の内容で準備しました。

 ※見た目をスッキリさせるためにローカリゼーションは外しました
 ※英語で書かれているメッセージなどは日本語を使うことも可能です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>enrollmentActions</key>
	<array>
		<dict>
			<key>icon</key>
			<string>symbol:clock</string>
			<key>label</key>
			<string>Waiting…</string>
			<key>wait</key>
			<integer>30</integer>
		</dict>
		<dict>
			<key>arguments</key>
			<array>
				<string>-setTimeZone</string>
				<string>Asia/Tokyo</string>
			</array>
			<key>icon</key>
			<string>symbol:clock</string>
			<key>label</key>
			<string>Set Time Zone</string>
			<key>requiresRoot</key>
			<true/>
			<key>shell</key>
			<string>/usr/sbin/systemsetup</string>
		</dict>
		<dict>
			<key>icon</key>
			<string>https://ics.services.jamfcloud.com/icon/hash_87d2224fa990a47de96f63fb2f84aa3b7304c20a3ff29412f5a7a484745fd2c9</string>
			<key>label</key>
			<string>Google Chrome</string>
			<key>policy</key>
			<string>chrome</string>
		</dict>
		<dict>
			<key>label</key>
			<string>Zoom</string>
			<key>icon</key>
			<string>https://ics.services.jamfcloud.com/icon/hash_bd5bead7738be1ed270b9f965ed43a0e73bbc21dbc74a99ca0cdd435d837ed1d</string>
			<key>installomator</key>
			<string>zoom</string>
		</dict>
		<dict>
			<key>label</key>
			<string>Jamf Connect</string>
			<key>icon</key>
			<string>https://ics.services.jamfcloud.com/icon/hash_cfd63778b8e9a5d4b2b22ff2b54ab440b1895d6a24e36b326ff19cb0d9b38901</string>
			<key>installomator</key>
			<string>jamfconnect</string>
		</dict>
	</array>
	<key>finalCountdown</key>
	<integer>30</integer>
	<key>icon</key>
	<string>name:AppIcon</string>
	<key>jssID</key>
	<string>$JSSID</string>
	<key>message</key>
	<string>Please be patient while Setup Manager configures your new Mac.</string>
	<key>title</key>
	<string>Welcome!</string>
	<key>userEntry</key>
	<dict>
		<key>assetTag</key>
		<dict>
			<key>placeholder</key>
			<string>YYYYMM-xxxSEQ</string>
		</dict>
		<key>computerName</key>
		<string>Mac-xxxSEQ</string>
		<key>department</key>
		<dict>
			<key>options</key>
			<array>
				<string>Sales</string>
				<string>Engineering</string>
				<string>Business Development</string>
			</array>
		</dict>
		<key>userID</key>
		<dict>
			<key>placeholder</key>
			<string>first.last@example.com</string>
		</dict>
	</dict>
</dict>
</plist>

上から、少しだけポイントを説明します。

<key>enrollmentActions</key>
の部分は、セットアップの流れを記述する箇所です。この部分に記述された順番でインストールやコマンドの実行が行われます。

まず、既知の問題に書かれている通り、冒頭の <key>wait</key> の部分で30秒Waitを入れました。
次に Shell Commandの実行でsystemsetupのコマンドでタイムゾーンの設定をしました。

その後、アプリケーションのインストールに移り、

<key>policy</key> の箇所で、
ポリシー のトリガー名による起動でGoogle Chrome をインストールし(例では"chrome"というトリガー名のポリシーを起動しています)、

<key>installomator</key>の箇所(2箇所)で、
installomator (アプリのインストール&アップデートを行うShellのツール)による、Zoom と Jamf Connectのインストールをしています。
 ※installomatorについてはこちら


■豆知識
iconに設定しているURLは、Selfserviceにアップロードした画像ファイルのアドレスをコピーして、

ハッシュ値(hash_以降の文字列)を取得し、以下のように編集すれば簡単に入手できます。
https://ics.services.jamfcloud.com/icon/取得した文字列(hash_xxxxxxx)


もとに戻って、

<key>enrollmentActions</key> のセクションの後は、終了後のカウントダウン設定やメッセージ、タイトルなど、Setup-ManagerのApp設定をしている箇所があり、

<key>userEntry</key>
の部分で、ユーザ入力させる項目の設定をします

この例では、
アセットタグ <key>assetTag</key>
コンピュータ名 <key>computerName</key>
部署 <key>department</key>
利用者情報 <key>userID</key>
の設定をしています。

部署のoptions(リストボックス)には、存在する部署をセットしてください。
日本語の部署名でも利用できます。
Jamf Connectを展開する場合、<key>userID</key> に入力した値でアカウントが作成されます。入力のValidationもかけられます。

2-2. 作成したplistを構成プロファイルにアップロードする。
ペイロード:アプリケーションとカスタム設定 > アップロード
環境設定ドメイン:com.jamf.setupmanager
plistファイル:上記2-1. の内容

構成プロファイルの作成

SCOPEには、「All Computers」もしくは、下記のような登録方法の事前登録を指定するグループを指定して設定してもよいと思います。

plistファイル:

登録方法の事前登録を指定するグループの例


3.(Jamf Connectを展開する場合は)Jamf Connect展開設定を作成する

※ここは、Jamf Connectを展開する場合のみご確認ください
※Jamf Connectを動作させる設定はすでに用意されている前提でお話をします。

こちらの内容をもとにJamf Connect展開設定 を作成します。
アプリケーションのインストール設定は上記工程で実施済なので、
以下3つの設定を作成します。

  • ユーザ入力からJamf Connectのプリセットユーザー(アカウント作成対象のユーザ)を取得する構成プロファイル

  • 構成プロファイル展開を行うための拡張属性

  • 構成プロファイル展開を行うためのスマートグループ


3-1. 構成プロファイル展開を行うための拡張属性を作成する。
Setup-Managerの処理が終了すると下記のファイルが作成されて、インベントリ更新が実施されます。

"/private/var/db/.JamfSetupEnrollmentDone" 

そのため、上記のファイルの有無をチェックする拡張属性があれば処理の終了が確認できます。

設定>コンピュータ管理>拡張属性 から作成します。

入力タイプ:Script
スクリプトの内容:下記「拡張属性のスクリプト」参照

拡張属性の作成

拡張属性のスクリプト

if [ -f "/private/var/db/.JamfSetupEnrollmentDone" ]; then
  echo "<result>done</result>"
else
  echo "<result>incomplete</result>"
fi


3−2.  構成プロファイル展開を行うためのスマートグループを作成する
上記の拡張属性を使って「Setup-Managerの処理が終了した端末のグループ」を作成します。

クライテリア:Setup Manager Done (3-1. で作成した拡張属性の名前を指定)
値:done

Setup-Managerの処理が終了した端末のグループ


3−3.  ユーザ入力からJamf Connectのプリセットユーザー(アカウント作成対象のユーザ)を取得する構成プロファイルを作成する
こちらの内容をもとに、Setup-Manager へのユーザ入力からJamf ConnectのユーザとRealNameを取得する構成プロファイルを準備します。

Setup-Manager へのユーザ入力から取得するとありますが、実際はPlistを見るとわかるように登録が完了した後、インベントリ情報から値を取得します。
そのため、エンロール時に配布する他のJamf Connectの構成プロファイルとは分けて設定を作成してください。

ペイロード:アプリケーションとカスタム設定 > アップロード
環境設定ドメイン:com.jamf.connect.login
plistファイル:下記「Jamf Connectのプリセットユーザーplist」参照

ユーザ入力からJamf Connectのプリセットユーザーを取得するプロファイル

Jamf Connectのプリセットユーザーplist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>EnrollmentRealName</key>
  <string>$REALNAME</string>
  <key>EnrollmentUserName</key>
  <string>$EMAIL</string>
</dict>
</plist>

SCOPEには、3-2. で作成したスマートグループ「Setup Manager Done」を指定します。

4. 事前登録 に pkg と構成プロファイルを追加する

自動デバイス登録用に事前登録を作成してください。

既知の問題に書かれている自動アドバンス設定と設定アシスタントオプションに関する記述を反映します。

事前登録[オプション]タブ >一般

エンロール時にインストールする構成プロファイルの選択をします。
既に準備されているJamf Connect Login やJamf Connect Menubar設定のプロファイルと、2−2.で作成したプロファイルを選択します。
※ 3-3.で作成したプロファイルは選択しないでください。

事前登録[オプション]タブ >構成プロファイル

エンロール時にインストールするパッケージの選択をします。
Jamf Connectの自動起動設定と、Setup-Managerのインストールパッケージを選択します。

事前登録[オプション]タブ >登録パッケージ

4. 動作確認

それでは、事前登録にデバイスを割り当てて、端末を初期化して動作確認をしてみましょう。

[言語]→[国または地域]→[音声または文字入力の言語]→[アクセシビリティ]→[Wi-Fi設定](有線での設定をおすすめします)→[リモートマネージメント]で登録ボタンを押下

①Setup-Managerが立ち上がり、ユーザ入力欄が表示される

Setup-Manager起動

②ユーザ入力項目を入力する
User Emailには Jamf Connect でアカウント作成するユーザを指定します。

ユーザ入力項目を入力

③インストールの進行状況が表示される
「About This Mac…」のリンクからこMacについての情報も表示可能です。
処理終了後、「Continue」ボタンを押下

インストールの進行状況を表示


④(スクリーンショットがないですが)[位置情報サービスを有効にする]画面が表示される

※ Jamf Connect の導入がない場合は、ここでユーザアカウントの作成画面が表示され、アカウント作成後ホーム画面が開いて完了です。


⑤Jamf Connectのパスワード同期画面が表示されるので、IdPのパスワードを入力する

Jamf Connectのパスワード同期画面

■補足情報
内部的にはユーザ入力をしたUser Emailをもとに、LDAP検索を行いその結果をインベントリ情報の「ユーザと位置」欄に設定し、その中の「氏名」を表示して「Eメールアドレス」を使用してIdPへ認証します。

誤ったEメールアドレスを設定すると、下記のような表示になることがあります。

誤ったEメールアドレスを入力した場合

こうなってしまった時は、
Jamf Proのインベントリ情報から該当の端末を検索し、そのユーザの「ユーザと位置」の「Eメールアドレス」と「氏名」の情報を正してから、
3-3で作成したユーザ入力からJamf Connectのプリセットユーザー(アカウント作成対象のユーザ)を取得する構成プロファイルを再配布し、再起動をしてください。
そうすると次回起動時はこの画面に正しい氏名が表示された状態から開始します。


もとに戻りまして。。認証が終わると

⑥アカウントが作成され、ホーム画面が開く

ホーム画面が開く

再起動してセットアップ完了

5. まとめ・感想

ちょっとイメージと違ったところや注意点

Jamf Connectの導入をするケースで、2点ビミョーと感じたところがありました。(Jamf Connectの導入をしない場合は影響ありません)

  • ①  Jamf Connect でアカウントを作成する際の認証の方法が、パスワード同期の動作と同じ方法(ROPG)で、多要素認証が利用できない点
     ※ 4. 動作確認の⑤

  • ② アカウントに管理者権限を付与していても、初回ログイン時は「通常」ユーザになってしまう点
    (再起動して、通常のJamf Connect Login をすれば、管理者権限が割り当てられるので、利用上の不都合はありませんが。。)

また、Mac App Store や Jamf Appカタログについて、 Jamf社のブログ には以下のような記載がありますが、これらのインストール方法は、インストールタイミングがコントロールできないため、監視をするといつまでも待たされることになるのでおすすめできないかな。。と思います。

Setup Manager can also watch for installations from the Mac App Store (via Volume Purchasing) or the Jamf App Catalog.

Mac App Store からのインストール (ボリューム購入経由) または Jamf App カタログからのインストールを監視することもできます。

あとは、Setup-Managerに限った話ではありませんが、セットアップは安定した高速なネットワークを確保して実施してください。
事前登録からのインストールがある場合は特にそうですが、低速な環境で実施するとセットアップのフローが正常に動作しないケースがあります。

とはいえ・・・

Setup-Managerは、準備の簡単さと設定の柔軟性のバランスがよく、セットアップ自体のユーザエクスペリエンスもよいと感じました。
今回は自動デバイス登録でしか試していませんが、登録が終わってから任意のタイミングでSelfserviceから起動するようなフローにも対応可能だと思います。

管理者側の立場から見ても、端末をセットアップする利用者側の立場から見ても程よく便利で、おすすめできるツールだと思います。
まだ改善されていくようなので、楽しみにしていきたいと思います。

以上、 エンジニアの中峯が担当いたしました。
最後まで読んでいただき、ありがとうございました。

新しい記事の情報をツイッターで報告しておりますので是非@magichat2011もフォローして下さい!