16
9

More than 3 years have passed since last update.

【Jamf】DEPNotifyを使ってゼロタッチデプロイメントっぽいことしてみる。

Last updated at Posted at 2019-10-21

はじめに

初カキコ…ども…
Jamf Proを使うとゼロタッチキッティングができるよ!みたいな話を真に受けると沼にハマることも多いかと思います。
べつにDEPNotifyを使うと実現できるようになるわけではないですが、使うとなんとなくかっこいいので実装してみました。
個人的にはJamf Connectと一緒に使うとめちゃくちゃかっこいい。
Jamf Connectもとても面白いのですが、長くなりそうなのでまた別の機会にします。

あ、Jamf Proユーザー向けの記事になりますのであしからず。

※2019/10/21 追記
と思ったら、Jamf Connectに関する良記事を見つけました。
リンクを貼っておくので参考にしてください。
Jamf Connect を使って Mac に AzureAD アカウントでログインしてみた
(株式会社クラウドネイティブさんのブログです。)

※2020/03/23 追記
Jamf Connectに関する記事書きましたので興味がある方はご参照ください!
【Jamf】Jamf Connectを使ってMicrosoftアカウントでMacにログインしてみる【Azure】

動画

先んじてJamf ConnectとDEPNotifyを組み合わせた場合のデプロイ動画を貼っておきます。
個人情報とか会社情報とかをiMovieで無理やりごまかしているのであまり美しくはないです・・・
ちなみにJamf ConnectはOneLoginと連携させました。
キッティングの流れとしては、
初期設定画面
→Jamf Connectログイン画面(OneLogin認証画面)
→DEPNotifyの画面
→デスクトップ画面
となっています。
test3-compressor.gif

DEPNotifyとは

DEPNotifyはネイティブのmacOSウィンドウとして実行され、テキストファイルを介して簡単に制御できます。求められた場合、Jamfによって行われたすべてのポリシーとインストールが自動的に表示されます。
DEPNotifyでウィンドウの画像、テキスト、進行状況バーを変更するのも非常に簡単です。 DEPNotifyでユーザー通知を表示し、ウィンドウを前面に表示することもできます。
DEPNotifyは、テキストファイルに「コマンド」を1行ずつ書き込むことで完全に制御されます。これにより、DEPNotifyが何時に表示するかを正確に管理できます。

↑Jamf Marketplaceより引用したものをGoogle翻訳しただけです。
https://marketplace.jamf.com/details/depnotify/

要するに、デプロイ中にインストールしているものの進捗状況を表示してくれるツールです。
フルウィンドウ表示を強制して他の操作をできないようにできるので、ユーザーさんに「デプロイ終わるまでちょっと待っててね」ができます。

必要なもの

  • Jamf Pro環境
  • DEPで購入したMac
  • インストールさせたいアプリなどのインストーラーパッケージ

とか

実はDEPじゃなくても使えます。が、今回はDEP前提で記載します。

利用環境

  • Jamf Pro v10.15
  • macOS 10.14.6

過去にmacOS10.13.6でも試してます。一応。

準備

さて、ここから準備にはいります。
配布アプリケーションの準備から記述しているので、DEPNotifyの準備まで飛ばしてしまっても構いません。

インストールさせたいものの準備

とりあえず今回は、

  • Slack(チャットアプリ)
  • Google Chrome(Webブラウザ)
  • Zoom(Web会議アプリ)

あたりでも入れておきます。

Slackの準備

SlackはApp Storeでも公開されているためVPP(Volume Purchace Program)1を利用して配布してしまってもOKだと思いますが、VPPを利用したアプリの配布はDEPNotifyを使って制御できないので今回はWebからダウンロードしたインストーラーを使います。

Jamf Proのパッケージ配信はpkg形式かComposer2を利用したdmg形式にのみに対応しています。
そのためSlackやGoogle Chromeなどドラック&ドロップでアプリケーションフォルダにつっこむタイプのアプリケーションはComposerなどを利用してpkgにしてあげる必要があります。

  1. Slack.appを取ってくる
    ここからSlackなんちゃら.dmgを取ってきます。

  2. Composer.appを起動してつっこむ
    ComposerはJamf ProユーザーであればJamf Nationのユーザー画面のMy Assetsよりダウンロードできます。
    Composerを起動するとどのSnapshotでパッケージを作るか聞かれますが、クリーンなアプリケーションのインストールごときでSnapshotを使うと時間が勿体無いので"Cancel"します。
    スクリーンショット 2019-10-16 12.07.35.png
    実はこのComposer、Snapshotを利用しなくてもドラック&ドロップでもパッケージが作れます。
    配置先のディレクトリ情報も拾ってくれるため、一度、Slack.appをアプリケーションフォルダに入れてからそのSlack.appをドラック&ドロップでComposerの"SOURCES"につっこみます。
    アクセス権が作成したユーザーになってしまっているかと思うので、右下のところで

R W X
root V V V
admin(80) V V
everyone V V

  と修正します。
スクリーンショット 2019-10-16 18.56.59.png
3. pkgのビルド
"Build as PKG"を選択してインストーラーパッケージをビルドします。
今後の運用を考え、パッケージ名にSlackのバージョンを追記しておくといいと思います。

Google Chromeの準備

さて、次にGoogle Chromeの準備です。
Slackの準備で行なっている方法だとアップデート毎にいちいちパッケージを作り直さなければいけないのでめんどくs(ry手間がかかります。
常に最新版で問題なければスクリプトでWebから直接インストールさせちゃってもいいかもしれません。

GoogleChrome_download.sh
#!/bin/sh

#Google Chromeを/tmpにダウンロード
curl https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg -o /tmp/googlechrome.dmg

#dmgをマウントする
hdiutil attach -nobrowse /tmp/googlechrome.dmg 

#GoogleChrome.appをアプリケーションフォルダにコピー
cp -r /Volumes/Google\ Chrome/*.app /Applications/

#dmgをアンマウント
hdiutil detach /Volumes/Google\ Chrome/

#インストーラーの削除
rm -r /tmp/googlechrome.dmg

Zoomの準備

ここからダウンロードします。
Zoomはpkg形式で提供されているので特にすることはありません。

DEPNotifyの準備

配布したいものの準備ができたらDEPNotifyの設定にはいります。
DEPNotifyに関するリソースは
GitHub:DEPNotify-Starter
GitLab:DEPNotify
にあります。

主に利用するものは、

  • DEPNotifyのインストーラー
  • DEPNotifyの設定をカスタマイズするシェルスクリプトファイル

となります。

DEPNotifyのインストーラーを入手

ここから最新版のDEPNotifyインストーラをダウンロードします。ここをクリックでpkgが直接ダウンロードできます。

DEPNotifyのカスタマイズ

GitHubからリソースをダウンロードし、"depNotify.sh"をカスタマイズしていきます。
ダウンロードしたDEPNotify-Starter-masterの中に"depNotify.sh"があるのでJamf上にアップロードしてから編集してもエディタで編集してからアップしても構いません。お好みで。
全部の設定を解説しているとしんどい長くなってしまうのでかいつまんで記載します。

テストモードのON/OFF

デフォルトだと42行目のところでテストモードが有効になっています。
テストモードだと、途中でDEPNotifyを終了できたりします。
変更する場合は、TESTING_MODE=trueTESTING_MODE=falseに変更します。
今回は"false"にしました。

フルスクリーンにするかどうか

デフォルトだと48行目のところでフルスクリーンが有効になっています。
フルスクリーンを有効にしていると、デプロイ中にユーザーが何もできない状態となります。
変更する場合はFULLSCREEN=trueFULLSCREEN=falseに変更します。
今回は"true"のままにしました。

各種表示項目の設定

53行目あたりからデプロイ中に表示する項目の設定になります。
英語表記が気になったので一応日本語に変更しています。
下記でデプロイ中に表示する画像のパスを指定しますが、こちらはDEPNotifyのインストールと同タイミングで存在している必要があるため、別途Composerで/tmpなどに配置したものをpkgにしておきます。(やり方はSlackの準備と下記スクリーンショットを参照してください。)
スクリーンショット 2019-10-16 18.54.59.png

BANNER_IMAGE_PATH:デプロイ中に表示する画像のパスを指定します
BANNER_TITLE:画像の下にそこそこ大きめで表示されるタイトルです
MAIN_TEXT:メインで表示される文章です。
INITAL_START_STATUS:デプロイ進捗バーの最初に表示されるコメントです。
INSTALL_COMPLETE_TEXT:デプロイ完了時に進捗バーに表示されるコメントです。
FV_COMPLETE_MAIN_TEXT:FileVault2ディスク暗号化を構成プロファイル等で設定している場合、暗号化のためにログアウトを促すメッセージを設定できます。
FV_COMPLETE_BUTTON_TEXT:ログアウトするボタンに表示するコメントです。
COMPLETE_MAIN_TEXT:デプロイ終了後に表示するコメントです。
COMPLETE_BUTTON_TEXT:終了ボタンに表示するコメントです。

表示項目設定例

###53行目らへん

# Banner image can be 600px wide by 100px high. Images will be scaled to fit
# If this variable is left blank, the generic image will appear. If using custom Self
# Service branding, please see the Customized Self Service Branding area below
  BANNER_IMAGE_PATH="/private/tmp/Unknown.png"

# Main heading that will be displayed under the image
# If this variable is left blank, the generic banner will appear
  BANNER_TITLE="ようこそ〇〇へ!"

# Paragraph text that will display under the main heading. For a new line, use \n
# If this variable is left blank, the generic message will appear. Leave single
# quotes below as double quotes will break the new lines.
  MAIN_TEXT='新しいMacを使い始める前に、いくつかのアプリケーションのインストールと設定を行います。 \n \n このプロセスが完了するまでに5~10分かかることがあります。'

# Initial Start Status text that shows as things are firing up
  INITAL_START_STATUS="初期設定を開始しています..."

# Text that will display in the progress bar
  INSTALL_COMPLETE_TEXT="設定が完了しました!"

###75行目らへん

  # Options if not using dropdown alert box
    FV_COMPLETE_MAIN_TEXT='ディスクの暗号化プロセスを開始するために、Macをログアウトする必要があります。 \n \n ログアウト時にパスワードの入力を求められるので、入力して[OK]または[Continue]を数回クリックします。 \n \n 暗号化が行われている間、Macは使用可能です。'
    FV_COMPLETE_BUTTON_TEXT="ログアウト"

  # Options if not using dropdown alert box
    COMPLETE_MAIN_TEXT='Macの初期設定と構成が完了しました。'
    COMPLETE_BUTTON_TEXT="さぁはじめよう!"

インストールするポリシーのトリガーを指定する

138行目のところでJamf Pro側に設定しているカスタムトリガーを記述します。
ここに設定するカスタムトリガーをJamf Proから配布するポリシーのカスタムトリガーと紐づけることがキモになりますのでお間違いなく!
"インストール中に表示するテキスト,カスタムトリガー名"という形で記述します。

POLICY_ARRAY

POLICY_ARRAY=(
    "Slackをインストールしています...,slack"
    "Google Chromeをインストールしています...,chrome"
    "Zoomをインストールしています...,zoom"
  )

Jamf Proへの実装作業

それではここまでに各種素材をJamf Proにアップロードしていきます。
パッケージやスクリプトのアップロード方法はJump Startトレーニング内でやっているかと思うので割愛します。

アップロードするもの

Jamf Pro側の設定

DEPNotify用 ポリシー設定

DEPNotifyそのもののポリシーを設定します。
私は下記のような感じで設定しました。

General
ポリシー表示名:000 DEPNotify
トリガー:登録完了
実行頻度:Ongoing
パッケージ
DEPNotify1.1.5.pkg
アクション:Install
DEPNotifyIcon.pkg
アクション:Install
スクリプト
depNotify.sh
Scope
PreStage EnrollmentsをCriteriaにしたSmart Computer Group
※)Enrollment Method: PreStage enrollment is 〇〇みたいな感じでCriteriaを設定したグループを事前に作っておいてください。

以上が、DEPNotifyの仕込みとなります。

各種インストール用 ポリシー設定

DEPNotifyのインストールとは別に、各種インストーラーのポリシーを設定していきます。
トリガーにDEPNotifyのカスタマイズで設定したカスタムトリガーを使用します。

  1. Slack
    General
    ポリシー表示名:001 Slack Install
    トリガー:カスタム slack
    実行頻度:Ongoing
    パッケージ
    Slack_4.1.pkg
    Scope
    PreStage EnrollmentsをCriteriaにしたSmart Computer Group

  2. GoogleChrome
    General
    ポリシー表示名:002 GoogleChrome Install
    トリガー:カスタム chrome
    実行頻度:Ongoing
    スクリプト
    GoogleChrome_download.sh
    Scope
    PreStage EnrollmentsをCriteriaにしたSmart Computer Group

  3. Zoom
    General
    ポリシー表示名:003 Zoom Install
    トリガー:カスタム zoom
    実行頻度:Ongoing
    パッケージ
    Zoom.pkg
    Scope
    PreStage EnrollmentsをCriteriaにしたSmart Computer Group

以上でインストーラー周りの設定は終了です。

おまけ:FileVault2ディスク暗号化をONにする場合

構成プロファイルで暗号化をONにする設定を仕込ませておくことで、デプロイ中に暗号化に必要なログアウトプロセスを促すことができます。
利用する場合は一緒に設定しておくと良いでしょう。
当然、ちゃんとJamf Pro側にリカバリーキーを収集しておくことも可能です。
(キャンセルで回避できちゃいますが、次回ログアウト時に再度表示されます。)

いざMacをデプロイ!!!

test7-compressor.gif
画面のの流れとしては、
初期設定画面
→ログイン画面
(Jamf ProのPrestageEnrollmentsの設定で"admin"というアカウントを自動作成しています)
→デスクトップ画面
→DEPNotifyの画面
→FileVault2ディスク暗号化画面
→ログイン画面
→デスクトップ画面
となっています。

動画のところで紹介したものとは違い、一瞬デスクトップが表示されてしまうのが懸念点ですね・・・
プロセスのラグなのか即時表示はなかなかうまくいかず・・・
あ、デプロイ中に表示している画像はみんな大好きいらすとや様から拝借いたしました。

おわりに

DEPでのキッティングにDEPNotifyは必ずしも必要なわけではありませんが、インストールなどバックグラウンドで行われているプロセスを可視化するというのは、俗にいうユーザー体験に繋がるのではないでしょうか。

確かに入社してMacを渡された時に、ようこそ!みたいなのが表示されたらちょっと嬉しいかもなぁとか思ったり思わなかったり。

ちょっとしたことですが、少しでも楽しく仕事できたらいいなぁと思うので是非試してみてください!!!

おわり。


  1. Appleが提供している企業などでアプリケーションを一括購入できるプログラム。これを利用するとApple IDを使わずにアプリケーションの配布などが行える。 

  2. Jamfが提供しているパッケージファイルを作成するツール 

16
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9