Jamf スクリプト経由で Xcode インストール
はじめに
Xcode の展開は、管理者にとって頭の痛い課題だと思います。アプリサイズが非常に大きく配布に時間がかかるため、インストール完了するまでの時間を把握することが困難で、更には途中でインストールに失敗していることもよくあります。
そのため、ユーザ自身が Apple Developer Program から取得したり、AirDrop などで Xcode を共有する方法を取った方が効率的とは言えますが、Apple IDを使用せずに配布したい場合、大変困ることとなります。
そこで、今回は、Jamf Pro でスクリプトを使用して Apple ID を使用せずに Xcode と CLIツールをインストールする方法をご紹介したいと思います!
※ Jamf Nation のスレッド と YouTube の説明動画をもとに検証を行いました。
手順書
① Apple Developer Program から対象 Xcode のバージョンをダウンロード
② ダウンロードした対象xipファイルを解凍、Xcode アプリをApplicationsフォルダに移動する
③ パッケージ化
パッケージ化ツールとして WhiteBoxのPackagesアプリ を使用しました。
(最初は普段使用しているJamf 社のツール Composer を使ってパッケージの作成を試したのですが、失敗するため別ツールを試しました。)
システム要求
Intel または Apple Silicon ベースの Mac
OS X 10.9 以降 (Ventura もサポートされてます。)
パッケージ化の手順
1. Raw Packageを選択
2. プロジェクト名・プロジェクトフォルダを入力
3. プロジェクト作成後は Settingsタブに移動
5. Payloadタブに移動
7. /Applications/Xcodeを選択
9. メニューのFile > Save
10. メニューのBuild > Build
Build 完了までしばらく待ちます。(Xcode の場合、時間がかかります)
※ Build 完了後、プロジェクトフォルダ内にあるbuildフォルダで作成したPKGが表示されます。
④ 作成したPKGを Jamf Pro 環境にアップロードする
ネット状況にも応じますが、これも結構時間がかかります。
⑤ スクリプトの作成
記事に掲載されていたスクリプトを一部変更しています。
・コードで Gatekeeper 後にあるコードを外し、代わりパッケージインストールと初回実行アイテムに関するコードに変更
・別途post installスクリプトで最新バージョン Command Line Tools をインストール(参考コメント)
作成したスクリプト:
・XcodeConfiguration.zsh
・XcodePostInstallCommandLineTools.sh
・setSleepTime.zsh (処理中にスリープしないようにするため)
⑥ ポリシーの作成
④で作成した PKG ファイルと⑤のスクリプトを用いて Jamf Pro でポリシーを作成します。 スクリプト>優先順位は以下のような組み合わせとなります。
Policyのトリガーで実施する場合
・setSleepTimeをBefore実行
・XcodeConfigurationをAfter実行
・XcodePostInstallCommandLineToolsをAfter実行
Self Serviceで実施する場合
・XcodeConfigurationをAfter実行
・XcodePostInstallCommandLineToolsをAfter実行
ログ
XcodeConfiguration スクリプトのインストールログは以下の階層に保存されます。
/Library/Logs/Xcode/XCodeInstall.log
検証結果
・ポリシーの実行には2~3時間かかりましたが、問題なくパッケージのインストールとスクリプトによる展開が実行され、アプリも問題なく開くことができました。
※今回 macOS Ventura にて検証を行いましたが、今後のメジャーアップデート時は検証して実装をお願いいたします。
Xcode を Apple ID を使用せずに配布したい場合、本記事を参考にしていただけますと幸いです。
以上、 エンジニアのメリンダが担当いたしました。
最後まで読んでいただき、ありがとうございました。