Macの初期化をJamfで "完全に"*1*2*3 自動化しました! 勝利!
だれ
株式会社Kyash
Information Security Team
Corporate Engineering
のわたなべです。
これはなに
KyashのTech Team内で、夏のアドベントカレンダー的な感じでブログを集中的に書くぞキャンペーンをやっています!
今回はプロダクト側ではないチームから記事をお届けします!
ということで
今回はJamf ProでMacの初期化を自動化した話を書きます。
会社ブログを1本書けと言われたので何を書こうかな
— Jun Watanabe@rela (@rela1470) 2021年7月21日
他のネタも、冬のアドベントカレンダーまでには...書きますね...きっと...may be...
さてさて、Macの初期化に関しては色々とプロダクトがあり、今回も先人の知恵を組み合わせての対応になります。
感謝の心を忘れずにいきましょう🙏🙏🙏🙏
いままで
OffBoardingや交換の際に行うMacの初期化ですが、今まではCorporate Engineeringメンバー内で行っていました。
流れとしては
といった感じです。普通ですね。
弊社ではEFIパスワードやFileVault2をMDMで強制していることもあり、1台あたりの手間が結構かかります。
台数が少ないうちは良かったのですが、やはり組織規模が拡大するにあたって段々と手が追いつかなくなってきました。
自動化第一弾
そこで、返却後にCorporate Engineeringメンバーが対応するのではなく、エンドユーザーに返却前に対応してもらうように運用を変更しました。
これは運用負荷対策だけでなく、自分の目で情報を初期化されるところを確認できるという心理的負荷の改善の面もありますし、PCの返却は宅急便を利用していますので、輸送事故などの紛失時におけるリスクヘッジにもなります。
まずは自動化の第一段階として、有名な以下のコマンドをJamf Pro Self Serviceで誰でも実行できるようにしました。
sudo /usr/sbin/softwareupdate --full-installer-version 11.4 # bigsur バージョンは書き換えてください sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/startosinstall ‑‑eraseinstall --agreetolicense ‑‑newvolumename "Macintosh HD"
とても押すのが怖いボタンができた... pic.twitter.com/ysIlrUMFEG
— Jun Watanabe@rela (@rela1470) 2021年2月9日
これでしばらくは運用が回っていたのですが、だんだんとトラブルが発生してきました。
そのため、これは初期化の前に、もう少し込み入った事前チェックが必要だろうという結論に至りました。
導入したツール
そこで今回導入したのが、macOSUpgradeというJamfのJoshua Roskosさんが開発しているツールです。
今回は初期化ツールとして使用していますが、ツールの名前の通り、OSのアップデート時にも使用できるツールです。
このツールはJamf Pro Self Service経由で呼び出されることを期待して作られており、Jamf ProでMacを管理している環境下ではベストマッチではないかと思います。
- AC電源に接続されているかのチェック
- OS イメージのダウンロード、SUMチェック
- ディスクの空き容量のチェック
- システム要件のチェック
などが主な機能です。
他にも同じようなツールとしてerase-installなどがあります。
これで"完全に"自動化できたでしょうか?
Apple ID のチェック
わたなべ的にもう一つチェックすべきと考えている要素があります。それがApple IDの紐付けです。
そもそも論としてManaged Apple IDに移行するべき、という話はありますが、それはそれとして...*5
特にMacを探す
を有効化されたまま返却されるのが一番厄介です。
PCを初期化したあともApple IDに紐付いており、あとからアクティベーションロックを掛けられる可能性があります。
このため、Macの返却前にApple IDの紐付けを本人に削除してもらうことが大切です。
今回紹介するスクリプトではApple IDに対してのチェックは行っていなかったので、スクリプトの先頭に自分で追加しました。
APPLE_ID=`sudo /usr/libexec/PlistBuddy -c "print" ~/Library/Preferences/MobileMeAccounts.plist | grep AccountID | wc -l`; if [ $APPLE_ID = "1" ]; then sudo /Library/Application\ Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -icon "$HOME/Library/Application Support/com.jamfsoftware.selfservice.mac/Documents/Images/brandingimage.png" -windowType utility -description "Apple ID がPCに設定されています。初期化前にサインアウトし、Macを探すをオフにしてください。サインアウト後、再度実行してください。" -button1 OK -defaultButton 1 exit 1; fi
MobileMeAccounts.plistの中身が設定内容なので、そのファイルの中にAccountIDが存在したらApple IDに紐付いていると判断し、ダイアログを出したあとにスクリプトを異常終了させます。
Macを探すだけをチェックすることも可能ですが、特にApple IDをサインインされたまま返却されるメリットはないと思ってるので、今回は全体のチェックとしました。
ダイアログはjamfHelperにSelfServiceのアイコンをくっつけてますが、ユーザーに伝われば何でもいいので、必要に応じて差し替えてください。そのままでも動くとは思います。
ということで、これで"完全に"自動化できました!!!!!
Jamf Proに登録
さて、それではJamf Proに設定を行いましょう!
とはいっても、設定内容的にはマニュアル通り、といった感じです。
設定>コンピュータ管理>スクリプト
に以下スクリプトを登録します。
上の方にApple IDのチェックを追加します。
Self Service用のポリシーを作成します。
先程登録したスクリプトを指定します。 引数が何個もあるので、準備をします。
スクリプト引数の準備
基本はスクリプトの中身を見ればわかりますし、必要に応じてスクリプト内で指定する方式に変更もできます。
パラメータ 4
- OSインストーラーのpath
- 例)
/Applications/Install macOS Big Sur.app
パラメータ 5
- OSインストーラーのバージョン
- 例)
11.4
パラメータ 6
- OSインストーラーのダウンロードに使われるJamf トリガー名
- 例)
download-bigsur-20210720
後述します。
パラメータ 7
- OSインストーラーのhash値
- 例)
a96c86cfb851fb89760b4b083eca8619
後述します。
パラメータ 8
- アップグレードは0、初期化は1。今回は初期化ツールとして利用するので1。
- 例)
1
OSインストーラーのダウンロードトリガーを作る
さて、"完全な"自動化を目指しているので、OSインストーラーのダウンロードに関しても今回のツールで制御をすることにします。 READMEを見ると何個も方式がありますし、ただのトリガーなのでインストーラーさえ準備できれば中身は自由なのですが、今回はパラメーター7のhash値を同時に作れる方式を紹介します。
ヘルパーツールでdmgファイルを作り、それをJamfにパッケージ登録する方式です! github.com
まずは作業するPCにOSインストーラーをダウンロードします。
ヘルパーツールにOSインストーラーの場所を引数として渡して実行します。
設定>コンピュータ管理>パッケージでアップロードします。
パッケージをダウンロードするポリシーをカスタムOngoingで作成します。 ここで作成したトリガー名をパラメータ 6に指定すればdoneです!
done!
ここまでくれば完成です!
Self Serviceからポチっとしちゃいましょう!
フルスクリーンで進捗が出ながら、いい感じで初期化されていくと思います。
いやー便利ですね!
ちなみにフルスクリーンをやめたい場合もオプションで変更できるので、必要に応じて変更してください。
それでは!
良い初期化ライフを〜