はじめに...
調査した内容を時系列にまとめた資料なので、その点ご了承ください。
目次
- 実行環境
- 実現したいこと
- 概要
- barrierアプリの入手
- barrierアプリの変換
- barrierアプリをwebサーバへ配置
- [参考]スクリプト
- barrierアプリ配信用スクリプトの配置
- まとめ
- 参考資料
1. 実行環境
項目 | 情報 |
---|---|
OS | macOS 11.3.1 |
HW | MacBook Air (11-inch, Mid 2013) |
MDM環境 | microsoft intune |
2. 実現したいこと
最終目標
- GUIの操作なしにmacのセットアップが行える環境を整備したい
― ※ただし、ユーザが選択する部分を除く
今回の目標
- intuneに参加しているmac端末に署名されたpkg以外のアプリを配布したい
3. 概要
intuneでmacOSのアプリを配信するには、署名されたpkgファイルを使う必要がある。しかし、署名されたpkgがない場合には、ライセンス上署名なしに配信する必要がある。
今回は、テストとしてsynergyからフォークした、barrierというアプリを配信する。
また、dmgがマウントできない(デバイス制御されている)環境も考慮し、dmg形式を署名なしpkg形式に変換し、変換したファイルをローカルのwebサーバに配置/配布する。
4. barrierアプリの入手
barrierは、以下githubから入手する。
5. barrierアプリの変換
4.で取得したファイルを署名なしのpkg形式に変換し、最後にzip圧縮しておく。
※dmgからpkgへの変換手順は、Microsoft社の手順を参考
example)
hdiutil attach < app.dmg >
pkgbuild --install-location /Applications --component /Volumes/< appname >_/_< appname >_.app _< pkgname_1 >.pkg
productbuild --synthesize --package < pkgname_1 >_.pkg _< distribution >.xml
productbuild --distribution < distribution >_.xml --package-path _< pkgname_1 >_.pkg _< pkgname_2 >.pkg
hdiutil detach /Volumes/< appname >
cp < pkgname_2 >_.pkg _< pkgname >.pkg
zip < pkgname >_.zip _< pkgname >.pkg
mkdir ~/barrier
cp ~/Downloads/Barrier-2.3.3-release.dmg ~/barrier
hdiutil attach ~/barrier/Barrier-2.3.3-release.dmg
pkgbuild --install-location /Applications --component /Volumes/Barrier/Barrier.app ~/barrier/barrier_1.pkg
productbuild --synthesize --package ~/barrier/barrier_1.pkg ~/barrier/distribution.xml
productbuild --distribution ~/barrier/distribution.xml --package-path ~/barrier/barrier_1.pkg ~/barrier/barrier_2.pkg
Cp ~/barrier/barrier_2.pkg ~/barrier/barrier.pkg
zip ~/barrier/barrier.zip ~/barrier/barrier.pkg
6. barrierアプリをwebサーバへ配置
今回はテストのため、localhostにファイルを配置する
7. [参考]スクリプト
参考にスクリプトを添付する。実装した機能としては
・Mac端末からサーバにアクセスできるかチェック
・アプリがインストール済みであるかの判定
・ファイルのダウンロード
・ダウンロードしたファイルのshaによるチェック
・アプリのインストール
スクリプト本体
#!/bin/bash
SHA="4a066d7004417dc7ec65d2bcf428af59c6645740"
SERVER_FQDN="localhost"
SERVER_IP="127.0.0.1"
BARRIER_APP="/Applications/Barrier.app"
DOWNLOAD_PKG_URL="http://${SERVER_FQDN}:8080/barrier.zip"
PKG_FILE=/tmp/barrier.pkg
ZIP_FILE=/tmp/barrier.zip
#
# check location
echo "0000 -- check location"
nslookup ${SERVER_FQDN} | grep ${SERVER_IP} 2>&1
if [ $? -eq 0 ]; then
echo "location check is success"
else
echo "location check is not success"
exit 1
fi
#
# barrier install check
echo "0001 -- barrier install check"
if [ -d "$BARRIER_APP" ]; then
echo "barrier is installed"
exit 0
else
echo "barrier is not installed"
fi
#
# download
echo "0002 -- download pkg file"
curl -fsSL ${DOWNLOAD_PKG_URL} -o ${ZIP_FILE}
#
# check sha
echo "003 -- check sha1"
SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)"
echo "SHA : ${SHA}"
echo "SHA_CALC : ${SHA_CALC}"
if [ "$SHA" = "$SHA_CALC" ]; then
echo "download succeeded"
else
echo "download error re-try"
curl -fsSL ${DOWNLOAD_PKG_URL} -o ${PKG_FILE}
SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)"
if [ "$SHA" = "$SHA_CALC" ]; then
echo "download succeeded(2)"
else
echo "download error(2) stop it"
exit 1
fi
fi
#
# unzip pkg file
unzip -B ${ZIP_FILE} -d /tmp
#
# install barrier
echo "005 -- install pkg"
sudo installer -pkg ${PKG_FILE} -target /Applications
if [ $? -eq 0 ]; then
echo "install succeeded"
exit 0
else
echo "install error"
exit 1
fi
8. barrierアプリ配信用スクリプトの配置
Microsoft Endpoint Manager Admin Centerにログインし、
デバイス > macOS > シェルスクリプトを開き、追加ボタンをクリック
今回は、以下のようにポリシーを作成/適用。
9. まとめ
- dmg形式以外のファイルを配布することができた
- スクリプトについて必要最低限の機能を実装したが、必要に応じて、追加機能が必要と思われる
- 注意-ファイルのダウンロード元をlocalhostと指定しているため、実行タイミングによっては、エラーになることがあるため、注意が必要
10. 参考資料