macOS ソフトウェア管理

macOS での新しいソフトウェア管理機能

これまで、ほとんどの macOS アプリ/ソフトウェアは、プロダクト プロビジョニングのファイル/アクションを使用して展開されていました。しかし、AirWatch 9.3 からは、macOS アプリのすべてのファイル タイプ (.dmg、.pkg、.mpkg、.app) を社内アプリ セクションで管理することができます。この新しいフレームワークでは、広く支持されている Mac 管理者コミュニティ ツールである「Munki」を利用して、アプリの展開とロジックの構成を行います。そのため、この記事の大部分は Munki ドキュメント (英語) からの引用されています。ただし、AirWatch との統合に関する部分については、独自の記述を加えました。 

要件

  • コンソールの要件:バージョン 9.3+ 
  • Agent の最低バージョン:macOS 向け Agent 3.0

ソフトウェア管理機能の有効化

  • 設定 > デバイスとユーザー > Apple > Apple macOS > ソフトウェア管理 と進みます。
  • ソフトウェア管理 を有効化します。このとき、ファイル ストレージが有効になっているかどうかも同時にチェックされます。ファイル ストレージが設定されていなければ、ファイル ストレージを有効化するように求めるメッセージが表示されます。ファイル ストレージを有効化する方法は、こちらを参照してください。
  • オンプレミス展開の場合は CDN を有効化する必要があります。CDN の有効化についての詳細は、こちらを参照してください。

 

前提条件 - macOS ファイルを AirWatch にアップロードする前に

macOS ソフトウェアの主要ファイル タイプ (.pkg、.dmg、.mpkg) はすべて、社内アプリとしてアップロードできるようになりました。.pkg ファイルはブートストラップ パッケージにすることも、フル ライフサイクル管理 (この機能) を介して管理することもできます。macOS ソフトウェアの高度な管理オプションと効果的な状態管理は、AirWatch Agent に統合された、オープンソースの Munki ライブラリを利用することで実現されています。そのため、AirWatch コンソールにアプリをアップロードする前に、ファイルごとに個別にメタデータ ファイルを生成する必要があります。Munki の展開ロジックは、該当アプリケーション ファイルのメタデータ、構成情報などを含む xml/plist ファイル「pkginfo ファイル」をベースとして構築されています。AirWatch コンソールでアプリ展開を管理するには、アプリケーション ファイルに加え、この pkginfo ファイルが必要になります。

 

VMware Admin Assistant ツール

pkginfo ファイルは、macOS 向け VMware AirWatch Admin Assistant ツールを使用して生成します。このツールは、Munki コマンドライン ユーティリティに GUI を付加したもので、目的のアプリケーション ファイルの pkginfo メタデータ ファイルを生成するために使用されます。

VMware Admin Assistant ツールは、AirWatch コンソールおよび https://awagent.com/AdminAssistant/VMwareAirWatchAdminAssistant.dmg から入手できます。Admin Assistant には自動更新メカニズムが組み込まれており、AppCast.XML ファイル (ここから入手可能) に基づいて最新のバージョンにアップデートされます。 

 

Admin Assistant を使用した pkginfo メタデータ ファイルの生成

  1. Admin Assistant ツールをダウンロードし、macOS のデバイスまたは仮想マシンにインストールします。
  2. Admin Assistant を開きます。解析するアプリケーション インストーラ ファイルのアップロードを求める Admin Assistant ダイアログが表示されます。

  3. アプリケーション インストーラ ファイル (.pkg、.dmg、.mpkg、または .app ファイル) を所定のフィールドにドラッグ アンド ドロップするか、コンピュータのローカル ドライブにあるインストーラ ファイルを選択して、インストーラ ファイルをアップロードします。 
    注:ファイルが .app の場合、展開用の .dmg に変換されます。

  4. ファイルを選択してアップロードすると、Admin Assistant は自動的にファイルの解析処理を開始します。この解析処理の実行中でも、必要に応じて他のファイルを追加することができます。

  5. 解析が完了すると、解析されたメタデータ ファイルを Finder ウィンドウで開くかどうかを確認するプロンプトが表示されます。ソフトウェア配布作業中に簡単に取得できるよう、ローカル フォルダにメタデータ ファイルを格納しておいてください。

デモ:macOS 向け VMware AirWatch Admin Assistant

 

サード パーティ製ツールとの統合 - AutoPkg

Admin Assistant 以外でも、いくつかの方法でメタデータ/pkginfo ファイルを入手することができます。VMware AirWatch は広く利用されているオープンソース ツール Munki と統合されているため、今の時点ですでに、複数のソリューション/ツールとの統合が可能となっています。統合に使用するツールには、推奨構成オプションを含む、ソフトウェア管理のための既製のベストプラクティス ガイドを備えたものもあります。これらのガイドは、Munki ユーザー コミュニティによって作成され、管理されています。このようなコミュニティ リソースのひとつとして AutoPkg があります。管理者はこのツールを使用して、よく使用されるサード パーティ製ソフトウェアのレシピ (recipe) を探したり、ソフトウェアの最新バージョンをそれぞれの公式 Web サイトから自動的に取得したりすることができます。さらに、AutoPkg に GUI を付加した AutoPkgr などのツールでは、サード パーティ製ソフトウェアのアップデートを定期的にチェックし、利用可能なアップデートがあれば管理者に通知するなど、ユーザー エクスペリエンスと統合性の向上が図られています。 

デモ:AutoPkg を使用した macOS ソフトウェア配布

 

すでに利用中のセットアップ済み Munki から AirWatch に移行する場合

必要であれば、管理者はアプリケーション/ソフトウェアの保存先として既存のファイル ストレージ サーバを使用し続けることもできます。管理者は、構成済み Munki リポジトリ サーバ上の既存アプリケーションへのダイレクト リンクを指定してアプリケーションを追加できます。AirWatch は指定されたリンクを介してファイルを参照します。このソフトウェアの追加方法には、AirWatch にアプリケーション ファイルをアップロードする必要がない、つまり AirWatch のファイル ストレージ領域を消費ことがない、というメリットがあります。既存のファイル リポジトリを使用する場合、管理者が AirWatch コンソールにアップロードする必要があるのは既存の pkginfo ファイルだけです。pkginfo ファイルが正常にアップロードされた後で、AirWatch コンソール UI から、展開されるアプリに対して追加の変更を加えることができます。  

 

AirWatch コンソールへの macOS アプリのアップロード

  1. アプリとブック > アプリケーション > ネイティブ > 社内 と進みます。
  2. アプリケーションを追加 をクリックします。
  3. アプリ/ソフトウェアのファイル (.pkg、.mpkg、.dmg) をアップロードします。
  4. 続行 をクリックして次の画面に進み、pkginfo メタデータ ファイル (.plist) をアップロードします。
  5. 続行 をクリックし、アプリ展開をカスタマイズします。以降の画面には、pkginfo ファイルに含まれる使用可能な構成が表示されます (たとえば、AutoPkg の pkginfo であれば install_check スクリプトが含まれていることもあります)。展開設定を新たに追加して、既存の設定と融合することもできます
    • pkginfo ファイルに含まれる構成値 (キー/値) のうち、UI に表示されていないものは変更されません。Munki クライアントでのサポート対象でも UI には表示すべきでないキーを含む pkginfo ファイルを管理者がアップロードできるという点で、この機能は重要です。UI での変更はすべて既存のキーと融合されます。

 

展開のカスタマイズ方法

インストール前/後スクリプト:

一般的に、ソフトウェアを再パッケージ化するのは、追加の構成タスクを実行したり、追加のアイテムをインストールしたりするためです。

再パッケージ化を回避するためのテクニックは、インストール後スクリプトやインストール後スクリプトをアイテムの構成に追加することです。これまで再パッケージ化によって実現する必要があったタスクのいくつかは、このインストール前/後スクリプトで処理することができます。

終了コード 0 は、スクリプトが正常に実行され、Munki が処理を続行できることを表します。 
注:インストール前スクリプトの実行に失敗すると、インストール自体が中止されます。対して、インストール後スクリプトの実行に失敗した場合、エラーは記録されますが、インストール自体は完了したとみなされます。

 

インストール前/後スクリプトのログ

echo 出力が /Library/Application Support/AirWatch/Data/Munki/Managed Installs/Logs/ManagedSoftwareUpdate.log ファイルに格納されます。

 

例:TextWrangler のインストール後スクリプト

広く利用されているテキスト エディタ「TextWrangler」は、TextWrangler アプリを内包する「ドラッグ アンド ドロップ」ディスク イメージとして配布されています。インストール後に初めて TextWrangler を起動すると、追加のコマンドライン ツールをインストールできるよう、ユーザーに管理者の資格情報の入力を求めるプロンプトが表示されます。このプロンプトを回避する方法のひとつは、TextWrangler を再パッケージ化して、アプリとコマンドライン ツールをまとめてインストールしてしまうことです。しかし、この方法では、新しいバージョンの TextWrangler がリリースされるたびに再パッケージ化を行う必要があるため、手間がかかります。そこで、再パッケージ化するのではなく、コマンドライン ツールを TextWrangler バンドルから目的の場所にコピーするインストール後スクリプトを実装するという方法をとることも可能です。

AirWatch に適切なファイルをアップロードした後、そのアプリの 詳細 画面の スクリプト タブでインストール前/後スクリプトを構成できます。スクリプトを適切なフィールドに貼り付けるだけで、Munki で使用される形式に自動的に整形されます。

postinstall.png

 

アンインストール方法

ソフトウェアをアンインストールするには複数のオプションがあります。ソフトウェアのファイル タイプに応じた最適なオプションは、VMware Admin Assistant ツールによって自動的に既定のオプションとして選択されます。既定のオプションをオーバーライドする必要がある場合は、AirWatch コンソールから実行できます。

コピー済みアイテムを削除
主に .dmg からインストールされたソフトウェアに使用されます。
  • pkginfo ファイルの items_to_copy 辞書配列から取得します。
    • この配列に含まれるすべてのファイル パスが削除されます。
  • AirWatch コンソールの将来のリリースでは、items_to_copy 配列内のパスを UI に表示する予定です。
アプリを削除
  • pkginfo ファイルの installs 辞書配列から取得します。
    • この配列に含まれるすべてのファイル パスが削除されます。
  • AirWatch コンソールの将来のリリースでは、installs 配列内のパスを UI に表示する予定です。
パッケージを削除 
主に .pkg からインストールされたソフトウェアに使用されます。
  • レシート (receipts) を使用してパッケージを分析し、削除します。
    • Bom ファイルを参照して、インストールされているファイルの特定を試みます。
    • レシート データを削除します。
  • パッケージは、他のファイルやプログラムに関連付けられていない場合にのみ削除されます。
  • AirWatch コンソールの将来のリリースでは、Munki によるチェック対象のレシート データを UI に表示する予定です。
アンインストール用スクリプト 
どのインストーラ タイプにも使用できます。
  • シェル スクリプトで記述します。
  • 必要に応じて独自のアンインストール処理を実行するために使用されます。
    • 管理者がアプリ展開を独自にカスタマイズしている場合、対応するアンインストール スクリプトを作成して、その独自設定を削除する必要があります

 

インストール/アンインストールの検証

いくつかのソフトウェアでは、管理者はインストールまたはアンインストールの成否について厳密な定義を構成する必要があります。Munki では、インストール検査用スクリプトまたはアンインストール検査用スクリプトを設定することで、これが可能になります。

インストール検査用スクリプト - 設定されていれば、このスクリプトが実行され、アイテムのインストールが必要かどうかが判断されます。終了コード 0 は、インストールが必要であることを示します。それ以外の終了コードの場合、インストールはスキップされます。

アンインストール検査用スクリプト - 設定されていれば、このスクリプトが実行され、アイテムのアンインストールが必要かどうかが判断されます。終了コード 0 は、アンインストールが必要であることを示します。それ以外の終了コードの場合、アンインストールはスキップされます。

 

コンディション

コンディションでは、ソフトウェアのダウンロードとインストールの前に評価される条件式を、アプリケーション単位で定義できます。統合されたオープンソースの Munki ライブラリによってサポートされている組み込みのコンディション属性のいくつかは、ソフトウェア管理の第 1 段階として VMware AirWatch でもサポートされています。OS バージョンやマシン タイプなど、よく使用されるコンディション属性のいくつかについては、代わりに AirWatch のスマート グループを使用しても、同様に対象を絞り込むことができます。

今後より一層の柔軟性を提供するために、VMware AirWatch は将来のバージョンにおいてさらに多くのコンディション属性をサポートする予定です。

 

組み込みのコンディション属性

現時点で条件式に利用できる組み込み属性:

属性 タイプ 説明 条件式の例
hostname 文字列 ホスト名。 hostname == "Lobby iMac"
arch 文字列 プロセッサ アーキテクチャ (​​「powerpc」、「i386」、「x86_64」など)。 arch == "x86_64"
os_vers 文字列 OS のフル バージョン (「10.7.2」など)。 os_vers BEGINSWITH "10.7"
os_vers_major 整数 OS のメジャー バージョン (「10」など)。 os_vers_major == 10
os_vers_minor 整数 OS のマイナー バージョン (「7」など)。 os_vers_minor == 7
os_vers_patch 整数 ポイント リリース バージョン (「2」など)。 os_vers_patch >= 2
machine_model 文字列 「Macmini1,1」、「iMac4,1」、「MacBookPro8,2」など。 machine_model == "iMac4,1"
machine_type 文字列 「laptop」または「desktop」。 machine_type == "laptop"
ipv4_address 文字列配列 この配列には全インターフェイスの現在の IPv4 アドレスが含まれます。 ANY ipv4_address CONTAINS '192.168.161.'
munki_version 文字列 インストールされている munkitools のフル バージョン。 munki_version LIKE '*0.8.3*'
serial_number 文字列 Mac のシリアル番号。 serial_number == "W9999999U2P"
date UTC 日付文字列 日時。文字列を NSDate オブジェクトにキャストするための特別な構文が必要である点に注意してください。 date > CAST("2013-01-02T00:00:00Z", "NSDate")

例:

machine_type == "laptop" AND os_vers BEGINSWITH "10.7"
date > CAST("2016-03-02T00:00:00Z", "NSDate")

コンディション内の日付:

日付文字列は UTC 形式で記述する必要があります。この形式の日付はローカル タイムゾーンの日付/時刻とみなされます。ローカル時間が 2013 年 1 月 2 日の深夜 0 時を過ぎていれば、コンディション「date > CAST("2013-01-02T00:00:00Z", "NSDate")」は TRUE (真) になります。

 

条件式内のリテラル

  • 文字列は単一引用符または二重引用符で囲みます:os_vers BEGINSWITH "10.7"

  • 整数は引用符で囲みません:os_vers_major == 10

  • ブーリアン (真偽値) は TRUE または FALSE で指定します (文字列とみなされるため、引用符で囲まないでください):some_custom_condition == TRUE

  • 日付を記述する場合は ISO 8601 形式の文字列からキャストする必要があります:date > CAST("2013-01-02T00:00:00Z", "NSDate")

 

アップデートの管理方法

アプリ/ソフトウェアのアップデートは、他のプラットフォームと同様の方法で、AirWatch コンソールから管理できます。新しいバージョンのファイルを追加する必要がある場合は、次の手順を実行してください。

  1. アプリとブック > アプリケーション > ネイティブ と進みます。
  2. アップデートする必要があるアプリをクリックします。アプリをクリックすると 詳細表示 画面が表示されます。
  3. 画面右上の バージョン追加 をクリックします。
  4. アプリの新しいバージョンのインストーラをアップロードします。
  5. 新しいバージョンの pkginfo メタデータ ファイルをアップロードします。
  6. 必要に応じてその他の変更を加え、構成を保存します。

 

トラブルシューティング方法

デバイスから報告された macOS アプリのインストール データは、AirWatch コンソールの複数の画面で確認できます。

  • アプリとブック > アプリケーション > ネイティブ > 社内 と進み、該当アプリをクリックして、アプリの 詳細表示 > デバイス タブを開きます。このタブの表には、デバイスごとのアプリのインストール状態が表示されます。
  • デバイスとユーザー > デバイス > リスト表示 と進み、任意のデバイスをクリックして、デバイスの 詳細表示 > トラブルシューティング タブを開きます。このタブの表には、デバイス上で実行された処理が表示されます。フィルタを使用することで、ソフトウェア配布に関する情報だけに絞り込むこともできます。

デバイスの次のパスに格納されている Munki ログに直接、アクセスすることもできます。

  • /Library/Application\ Support/AirWatch/Data/Munki/Managed\ Installs/Logs/ManagedSoftwareUpdate.log

 

既知の問題

  • ソフトウェアがいくつかのデバイスに公開/インストールされた後では、「インストール スクリプト」や「アンインストール スクリプト」などの構成オプションのいずれかを変更しても、すでにアプリが正常にインストールされているデバイスに、更新された構成オプションが配布されることはありません。構成オプションの更新は、InstallApplication (アプリのインストール) コマンドを実行した場合にのみ適用できます。デバイスのローカル キャッシュに格納されている pkginfo ファイルを更新できるのは、このコマンドだけです。スクリプトを更新するには、管理者はソフトウェアがインストールされているすべてのデバイスを手動で選択し、このコマンドをプッシュし直す必要があります。コマンドの再プッシュにより、キャッシュされている個々の pkginfo ファイルは最新の情報に更新されます。
    注:このコマンドをプッシュし直しても、ソフトウェアのバージョンが変更されていない限り、アプリが再インストールされることはありません。また、Munki には、インストール済みアプリの再インストールを回避するメカニズムも用意されています。
  • あるパッケージが別のパッケージやソフトウェアに依存している場合、管理者は手動でパッケージの pkginfo を編集してrequires キーにパッケージ/ソフトウェアを指定する必要があります。Munki に依存関係の有無を認識させ、そのような依存パッケージのインストール順序を確定させるには、pkginfo でこのキーを指定する以外に方法はありません。キーを指定しなければパッケージはランダムな順序でインストールされますが、その場合、インストール中に依存パッケージの不足があるとインストールは失敗します。 
    Netbeans をインストールするには、そのコンピュータにすでに Java がインストールされている必要があります。しかし、Netbeans ソフトウェア パッケージのインストール時、Java が自動的にインストールされることはありません。Munki 統合機能やスタンドアロンの Munki を使用しないと、管理者が Netbeans をインストールしようとしてもインストールは失敗し、Netbeans のインストール前にまず Java をインストールするように求めるメッセージが表示されます。
  • パッケージをアップグレードしても receipts 配列が以前と同じ (同じバージョン番号を含んでいる) であれば、Munki は新しいパッケージがアップグレードされたパッケージであることを検出できません。同じ receipts 配列が使用されていることにより、Munki により新しいバージョンのインストールが必要と判断されず、結果としてパッケージはユーザーのコンピュータにインストールされません。
    注:receipts 配列に同一バージョンを含む複数のパッケージが存在する場合、Autopkg Recipe を使用して pkginfoinstalls 配列を追加することで、この問題を解決できます。この方法で、Munki はパッケージがアップグレードされたことを検出できるようになります。同様に、管理者が手動で pkginfoinstalls 配列を追加することもできます。

:Wireshark は、同一バージョンを含む receipts を持つパッケージの一例です。このため、Munki はアップグレードされた Wireshark パッケージが展開されても、それを検出することができません。

Other Languages: English

免責事項:これは英文の記事「macOS Software Management」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Have more questions? Submit a request

0 Comments

Article is closed for comments.