App Layering

アプリレイヤーの作成またはクローン

アプリレイヤーは、1 つ以上のアプリケーションを含む仮想ディスクです。通常、アプリレイヤーには 1 つのアプリケーションが含まれます。レイヤーに複数のアプリケーションを含める場合は、通常は同時に更新するものに限定します。

アプリレイヤーを最初から作成する

このセクションでは、次のようなアプリレイヤーの作成について説明します。

  • 要件および考慮事項
  • 新しいアプリレイヤーを開始する
  • パッケージングマシンの導入
  • アプリケーションをインストールする
  • 表示される可能性のあるレイヤー整合性メッセージ
  • レイヤーを確認し、マシンをシャットダウンします
  • 必要に応じて、 Microsoft Ngen.exe の運用を迅速化
  • レイヤーのファイナライズ

要件および考慮事項

アプリレイヤーには、1 つ以上のアプリケーションと関連する設定が含まれます。常にアプリケーションレイヤーにMS Officeをインストールし、OSレイヤーにはインストールしないでください。

  • ウイルス対策アプリケーション:ここに記載されている手順に従って、ウイルス対策アプリケーションを常にアプリレイヤーに配置します。ウイルス定義ファイルの更新について戦略的に取り組みます。また、Symantecの仮想イメージ例外ツールなどのファイルマーキング機能にも注意してください。ホストベースのスキャンエンジンを検討し、ユーザーログオン時の遅延に留意してください。レイヤーではなく、パブリッシュされたレイヤー画像をスキャンしてください。スキャンは、Citrix Virtual Apps およびCitrix Virtual Desktopsのユーザーアクセスでのみ実行されます。
  • MS Office:このレシピを使って Office をインストールしてください。Office 2010 以降の VDI 展開では、KMS の要件を考慮してください。Office 2007 以前では、ボリュームライセンスを要件として検討してください。他のライセンス構造を使用することは、各デスクトップで各ライセンスをアクティブ化する必要があるため、それほど便利ではありません。ユーザー設定とデータを保持するには、Office 365 ユーザーレイヤーストア.ost ファイルとストリーミングファイルを有効にします。検索インデックスは保存されません。
  • 特定のアプリケーションを階層化するためのレシピ:事実上すべてのアプリケーションを階層化できますが、App LayeringRecipesフォーラムでまとめたヒントから始めると、簡単に階層化できるアプリケーションもあります 。開始する前に、階層化している特定のアプリケーションに関するヒントと手順については、フォーラムを参照してください。
  • ローカルユーザーまたは管理者の追加が必要なアプリケーション。アプリケーション Layer へのアプリケーションのインストール中に追加または変更したローカルユーザーまたは管理者は、保持されません。OS レイヤーは、追加したローカルユーザーまたはグループを保持しますが、アプリレイヤーは保持しません。アプリケーションをインストールする前にローカルユーザーまたは管理者を OS レイヤーに追加するか、OS レイヤーにアプリケーションをインストールすることを検討してください。

新しいアプリレイヤーを開始する

アプリケーションをインストールできるパッケージングマシンを作成するには、次の手順に従います:

  1. 管理コンソールにログインし、[レイヤー] > [アプリケーションレイヤー] を選択します。
  2. アクションバーの [ レイヤーを作成 ] をクリックします。
  3. [ レイヤ名 ] と [ バージョン] の両方を必須の値で入力します。他の値を入力することもできます。
  4. [OS レイヤー] タブで、このアプリレイヤーに関連付ける OS レイヤーを選択します。
  5. (オプション)[前提条件レイヤー] タブでは、このレイヤーにアプリをインストールするときに存在する必要がある他のアプリレイヤーを指定できます。必要なアプリを同じレイヤーに含めることができない場合にのみ使用します。この高度な機能の詳細については、以下のセクションの「前提条件レイヤー」をご参照ください。 注: 既存のアプリ Layer に新しいバージョンを追加する場合は、必要な前提条件レイヤーを指定する必要があります。これらはバージョン間で引き継がれません
  6. [Connector] タブで、レイヤーと格納場所を構築するプラットフォームの資格情報を含むコネクタ構成を選択します。必要な設定がリストにない場合は、「 新規をクリックして追加します
  7. [パッケージのディスク] タブで、 パッケージングディスクのファイル名を入力し 、ディスク形式を選択します。このディスクは、パッケージングマシン、つまり、アプリケーションをインストールする仮想マシンに使用されます。
  8. [アイコンの割り当て] タブで、レイヤに割り当てるアイコンを選択します。このアイコンは、レイヤーモジュール内のレイヤーを表します。
    • 既存のイメージを使用するには、イメージダイアログボックスでイメージを選択します。
    • 新しいイメージをインポートするには、[ 参照 ] をクリックし、PNG または JPG 形式の画像を選択します。
    • 「コンポジットをオフロード」(Offload Compositing) を選択したコネクタを使用し、App Layering に付属しているアイコンの 1 つを選択すると、パッケージングマシンはレイヤーのファイナライズ時にレイヤーの内容に基づいてアイコンの割り当てを試みます。
  9. [確認と完了] タブで、アプリレイヤーの詳細を確認し、[ レイヤーの作成] をクリックします。レイヤーを作成する前に、オプションのコメントを入力できます。コメントは、情報ビューの「監査履歴」に表示されます。パッケージングディスクを作成した後、タスクバーに、パッケージングマシンを展開できるHypervisor 内のパッケージングディスクへのリンクが表示されます。
  10. [ タスク ] ページを選択し、[ ディスクのパッケージ化 ] タスクをクリックします。情報アイコンをクリックすると、このレイヤーのパッケージングマシンが公開されている場所へのリンクを含む、タスクの完全な説明が表示されます。

次に、Layer のパッケージングマシンをデプロイできます。

パッケージングマシンの導入

Hypervisor を選択します:

  • XenServer、Hyper-V、Nutanix、または vSphere
  • Azure
  • その他のHypervisor (ネットワークファイル共有)

XenServer、Hyper-V、Nutanix、vSphere

  1. ハイパーバイザークライアント (XenServer、Hyper-V Manager、Nutanix Prism、または vSphere) にログインします。
  2. App Layering 管理コンソールにログインし、 タスクページを選択すると 、現在のタスクが表示されます。
  3. [ Create App Layer ] タスクを選択し、[情報] アイコンをクリックして、タスクの詳細な説明を表示します。
  4. タスクの説明に記載されている URL を使用して、Hypervisor ークライアントのパッケージングマシンに移動します。
  5. パッケージングマシンの電源が入っている。

これで、このレイヤー用のアプリケーションをパッケージングマシンにインストールできます。

Azure

アプライアンスによって Azure Custom デプロイテンプレートが開き 、そこでパッケージングマシンを作成できます。

  1. Azure ポータル (https://portal.azure.com) にログインします。注: 次の手順を実行する前に、 ログインする必要があります
  2. App Layering 管理コンソールに移動し、[ タスク ] ページを選択します。[ アプリの作成] レイヤータスクを選択し 、情報アイコンをクリックして詳細を表示します。
  3. タスクの詳細のリンクを使用して、Azure のパッケージングマシンに移動します。[カスタム配置] パネルが開きます。
  4. Azure パラメーターを設定します。
    • マシン名のパッケージ化-Azure 仮想マシン名の要件に準拠している必要があります。
    • Size — 仮想マシンのサイズ。
    • 仮想ネットワークとサブネット-パッケージングマシンを展開するためのものです。 重要: リソースグループの場所の値がコネクタ構成で構成したストレージアカウントの場所と一致していることを確認してください 。これらの場所が同じでない場合、パッケージングマシンは展開に失敗します。展開が失敗した場合は、リンクをブラウザに再度貼り付けて最初からやり直すことができます。
  5. パッケージングマシンの電源が入ったら、レイヤーに含めるアプリケーションをインストールできます。

その他のHypervisor(アプライアンスのネットワークファイル共有による)

  1. ネットワークファイル共有の次のディレクトリでパッケージディスクを探します。 \ Unidesk\Packaging Disks

  2. パッケージ化ディスクをHypervisor 上の別の場所にコピーします。これにより、ディスクを使用して新しい仮想マシンを作成するときに、Hypervisor によって生成されるファイル用の領域を確保できます。

    重要: ファイナライズする準備ができるまで、ディスクを [Finalize] フォルダにコピーしないでください 。ファイナライズフォルダ内のディスクは、次に作成する新しい仮想マシンにアタッチできません。

  3. パッケージングディスクをブートディスクとして使用して仮想マシンを作成します。

  4. パッケージングマシンの電源を入れます。

パッケージングマシンの電源が入ったら、レイヤーに含めるアプリケーションをインストールできます。

アプリケーションをインストールする

パッケージングマシンにアプリケーションをインストールするときは、ログイン時にユーザーに表示させたいアプリケーションのままにしておきます。アプリケーションの状態は、ユーザーがアプリにアクセスするたびに体験する状態です。

  1. オペレーティングシステムの作成に使用したユーザーアカウントを使用して 、パッケージングマシンにリモートでログインします。
  2. アプリケーションと、アプリに必要なドライバー、ブートレベルのアプリケーション、またはファイルをインストールします。
  3. システムの再起動が必要な場合は、手動で再起動します。 パッケージングマシンは自動的に再起動しません 。インストールするアプリケーションがブートレベルのコンポーネントに影響する場合は、Layer のファイナライズの一環としてパッケージングマシンを再起動します。
  4. パッケージングマシンが、ユーザーが希望する状態になっていることを確認します:
    • アプリケーションで、インストール後のセットアップまたは登録が必要な場合は、ここでこれらの手順を完了してください。
    • パッケージングマシンに含めたくない設定 、構成、ファイル、マップされたドライブ、またはアプリケーションを削除します。

レイヤーを確認し、マシンをシャットダウンします

パッケージングマシンにアプリケーションがインストールされたら、レイヤーがファイナライズされる準備ができていることを確認します。インストール後の処理がすべて完了すると、レイヤーはファイナライズできます。

未処理のプロセスがすべて完了していることを確認するには、パッケージングマシンのデスクトップで Shutdown Fo Finalize ツールを実行します。

[ファイナライズのシャットダウン] ツールを使用するには、次の手順に従います。

  1. パッケージングマシンにログインしていない場合は、マシンを作成したユーザーとしてリモートログインします。
  2. [ ファイナライズのためにシャットダウン ] アイコンをダブルクリックします。コマンドラインウィンドウに、レイヤー検証プロセスの詳細を示すメッセージが表示されます。
  3. レイヤーをファイナライズする前に完了する未処理の操作がある場合は、プロセスを完了するように求められます。Microsoft Ngen.exe操作を完了する必要がある場合は、この記事の後半で詳しく説明するように、 Ngen.exe操作を早めることができる場合があります。
  4. 保留中の操作が完了したら、 Shutdown For Final アイコンをもう一度ダブルクリックします 。これにより、パッケージングマシンがシャットダウンされ、レイヤーはファイナライズする準備が整います。

ファイナライズ処理中に表示される可能性のあるレイヤー整合性メッセージ

次のレイヤー整合性メッセージは、レイヤーがファイナライズする準備が整う前にキューに格納された操作を完了する必要があることを伝えます:

  • RunOnce スクリプトが未処理です。パッケージングマシンを確認して再起動します。
  • インストール後の再起動が保留中です-パッケージングマシンを確認して再起動します。
  • Microsoft Ngen.exe 操作は、バックグラウンドで進行中です。
  • MSIのインストール処理が進行中です-パッケージングマシンを確認してください。
  • ブートディスク上のドライバを更新するために再起動が保留されています-パッケージングマシンをチェックして再起動します。
  • Microsoft Ngen.exe の操作が必要です。
  • ソフトウェアセンタークライアントが実行されるように構成されていますが、SMSCFG.INI はまだ存在します。SCCM を Layer にデプロイする方法の詳細については、「 App Layering レシピ:Layer に Microsoft SCCM をデプロイする方法」を参照してください。

レイヤー整合性メッセージの意味とデバッグ方法の詳細については、「 Citrix App Layering のレイヤー整合性の問題のデバッグ」を参照してください。

App Layering ソフトウェアが停止し、すべてのプロセスが完了するまでパッケージングマシンに戻るため、マシンをシャットダウンしてもレイヤーの整合性メッセージをバイパスすることはできません。

Microsoft Ngen.exe の操作が進行中の場合は、次のセクションで説明するように、処理を早めることができる場合があります。

必要に応じて、 Microsoft Ngen.exe の運用を迅速化

すべてのソフトウェア更新プログラムをインストールしたら、Ngen.exeが基本的に.NETバイトコードをネイティブイメージに再コンパイルできるようにし、それらを管理するためのレジストリエントリを構築する必要があります。

Ngen.exeは、 .NET システムの一部であるMicrosoft ネイティブイメージジェネレータです。Windows は、インストールされるソフトウェアと、構成内で検出されるソフトウェアに基づいて、いつNgen.exeを実行するかを決定します。

重要:

Ngen.exe が実行されているときは、それを完了させる必要があります。中断されたNgen.exe操作では、 .NETアセンブリが機能しないか、 .NET システム内のその他の問題が発生する可能性があります。

通常、 Ngen.exe はフォアグラウンドアクティビティがあると一時停止するバックグラウンド操作です。Ngen.exe 操作を迅速に行いたい場合は、タスクをフォアグラウンドに持ち込んで、できるだけ早く完了できます。

タスクをフォアグラウンドにする手順は、次のとおりです。

  1. 管理者としてコマンドプロンプトを開きます。
  2. 現在使用中のバージョンのMicrosoft.NET\Frameworkディレクトリに移動します。

    cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX <!--NeedCopy-->

  3. 次のNgen.exeコマンドを入力して、キューに入っているすべてのアイテムを実行します。このコマンドは、アセンブリを構築する前に、キューに入れられたコンポーネントのインストールを処理します。

    ngen eqi 3 <!--NeedCopy-->

    Ngen.exe タスクはコマンドプロンプトの最前面に移動し、コンパイル中のアセンブリを一覧表示します。コンパイルメッセージが表示されていれば問題ありません。

    タスクマネージャを使用してMSCORSVW.EXEのインスタンスが実行されているかどうかを確認できます。そうであれば、それを完了するか、 ngen eqi 3を実行することを許可します。

    注意

    タスクを停止するために再起動しないでください。タスクの完了を許可します。

  4. すべてのNgen.exeプロセスが完了するまで実行されていることを確認します。
  5. 完了したら、デスクトップの [ 終了時のシャットダウン] ショートカットを使用して仮想マシンをシャットダウンします

レイヤをファイナライズする

ソフトウェアをインストールし、パッケージングマシンを検証してシャットダウンしたら、レイヤーをファイナライズする準備が整いました。

Hyper-V:

コネクタ構成で [ コンポジットをオフロード ] を選択すると、コンポジットプロセスの一環として自動的にファイナライズが行われます。

XenServer、Azure、Hyper-V、Nutanix AHV、VMware vSphere

レイヤが検証され、シャットダウンされたので、ファイナライズする準備が整いました。

Hyper-V:

[ コンポジットをオフロード ] を選択した状態でコネクタを使用している場合、このファイナライズプロセスは自動化されるため、これらの手動手順を実行する必要はありません。

  1. 管理コンソールに戻ります。
  2. [ レイヤー] > [アプリレイヤー] を選択し、準備したレイヤーを選択します。
  3. [ バージョン情報] タブでレイヤーバージョンを選択し 、アクションバーの [ ファイナライズ ] をクリックします。
  4. [ ファイナライズ ] をクリックして、レイヤーの作成を終了します。
  5. タスクバーを監視して、アクションが正常に完了したことを確認します。

レイヤーが確認されると、パッケージングマシンは取り外され、使用するストレージスペースが最小限に抑えられます。

その他のHypervisor (ネットワークファイル共有)

レイヤが検証され、シャットダウンされたので、ファイナライズする準備が整いました。

  1. パッケージングマシンファイルを含むフォルダから、ネットワークファイル共有のファイナライズフォルダにパッケージディスクをコピーします。 \ Unidesk\ Finalize

  2. 管理コンソールに戻ります。

  3. レイヤー > アプリレイヤーを選択します

  4. [ バージョン情報] タブでレイヤーバージョンを選択し 、アクションバーの [ ファイナライズ ] をクリックします。

  5. タスクバーを監視して、アクションが正常に完了し、レイヤーがデプロイ可能であることを確認します。

アプリレイヤーのクローン

特定のバージョンの Layer をクローンすることで、既存の Layer と同じアプリ Layer を作成できます。クローン作成プロセス中に、レイヤーに固有の情報の入力を求めるプロンプトが表示されます。アプリレイヤーにバージョンを追加することで、アプリレイヤーを更新できます。クローンが作成されるレイヤのバージョンは 1 つだけなので、クローン作成元レイヤに多数あった場合でも、新しいレイヤには開始するバージョンが 1 つだけです。

レイヤのクローンを作成するには:

  1. コピーするアプリレイヤーを選択し、アクションバーの [ レイヤーの複製 ] をクリックします。
  2. クローンするソースレイヤバージョンを選択します。ドロップダウンメニューから必要なバージョンを選択できます。
  3. 追加情報が役立つ場合は、レイヤーの名前と説明を入力します。説明はオプションです。
  4. 追加情報が役立つ場合は、バージョンとバージョンの説明を入力します。
  5. [アイコンの割り当て] タブで、新しいレイヤーのアイコンを選択します。
  6. [確認とクローン] タブで、設定を確認し、[ レイヤーのクローン作成 ] ボタンをクリックします。

アイコンを除き、ソースと同じ画層プロパティで新しい画層が作成されます。 新しいアプリレイヤーの優先順位は 、最後に作成されたアプリレイヤーよりも高いため、レイヤーの優先度はソースレイヤーの優先度よりも高くなります。新しいレイヤーサイズは元のレイヤーサイズよりも小さくなる可能性がありますが、これはクローニング中に空きスペースが削除されたことを示しているにすぎません。レイヤーはソースと同じように機能します。

新しいレイヤーは他のレイヤーと同じように使用でき、 元のレイヤーとはまったく関連付けられません

高度なアプリレイヤーオプション

アプリレイヤーを作成および更新するときは、次の高度な機能に注意してください。

  • カスタムレイヤースクリプト
  • レイヤキャッシング
  • 前提条件レイヤー

カスタムレイヤースクリプト

システムの起動時に 1 回実行されるアプリ Layer にスクリプトを含めることができます。スクリプトを構成するには、アプリケーションレイヤーのプロパティを編集します。

注:

また、レイヤーリビジョンのプロパティは、リビジョンの作成中、またはリビジョンの確定後に編集できます。

このスクリプトは、アプリレイヤーを含むレイヤー化されたイメージが最初に起動したときに実行されます。アプリケーションレイヤーが弾力的にレイヤー化されている場合、アプリケーションレイヤーディスクをマウントするときにカスタムレイヤースクリプトが実行されます。カスタム Layer スクリプトは通常、MS Office など、初回起動時にライセンスのアクティベーションを必要とするアプリに使用されます。

カスタムレイヤースクリプト

レイヤーキャッシュによるアプリレイヤー作成の高速化

レイヤーキャッシュを使用すると、レイヤーの作成時間を短縮できます。

キャッシュの仕組み

アプリレイヤーを初めて作成するときに、キャッシュサイズが十分に大きい値に設定されている場合、ブートディスクと空のパッケージディスクで構成されるテンプレートがキャッシュに保存されます。起動ディスクには、アプリケーションレイヤーの設定で指定されている OS レイヤー、プラットフォームレイヤー、および前提条件レイヤー (存在する場合) が含まれます。

同じOSレイヤー、前提条件レイヤー、プラットフォームレイヤーの組み合わせを使用するアプリレイヤーを作成すると、App Layering ソフトウェアによってテンプレートが再利用されるため、作成時間が大幅に短縮されます。

次に、別の OS レイヤー、前提条件レイヤー、およびプラットフォームレイヤーの組み合わせを使用するアプリレイヤーを作成すると、App Layering ソフトウェアによってテンプレートが作成され、キャッシュに追加されます。

推奨キャッシュサイズ

推奨されるキャッシュサイズは、アプリレイヤーに必要な OS、プラットフォーム、および前提条件レイヤーの組み合わせの数によって異なります。組み合わせの数によって、キャッシュに保存されるテンプレートの数が決まります。

各テンプレートに必要な容量を見積もる手順は、次のとおりです。

  1. OS、プラットフォーム、前提条件の各レイヤーの [ i ] アイコンを選択し、[ 最大レイヤーサイズ] を確認します。
  2. 最大ディスクサイズを追加します。合計は、そのテンプレートに必要なキャッシュサイズです。

キャッシュに必要な容量を見積もるには、テンプレートごとに決定したサイズを追加します。

前提条件レイヤー

まれに推奨されています 。前提条件レイヤーを使用すると、レイヤーの作成時またはバージョンを追加するときに、パッケージディスクに 1 つ以上の既存のアプリレイヤーを含めることができます。

前提条件レイヤーは、現在のアプリケーションをデプロイするのに必要なものを Layer に追加できるので、必要な場合にのみ使用してください。この現象は、将来競合を引き起こす可能性があります。

前提条件レイヤーを使用する時時

前提条件となるレイヤーは、いくつかの理由で必要になることがあります。

  • 現在のレイヤーにアプリケーションをインストールする場合は、別のアプリケーションの存在が必要です。たとえば、Java を必要とするアプリケーションをインストールし、Java が別のレイヤーに配置されている場合などです。
  • ソフトウェアのインストールによって、既存のアプリケーションに設定が追加されるとき。たとえば、Office アドインをインストールするときは、最初に Microsoft Office をインストールする必要があります。
  • 2 つのアプリケーションが同じレジストリキーを変更し、2 番目のアプリケーションがキーに追加し、それを置き換える必要がないとき。たとえば、Citrix AgentやImprivataなど、Windowsでログインキーを変更する2つのアプリケーションがあります。

これらの問題のいくつかは、前提条件レイヤーを使用するのではなく、2 つのアプリケーションを同じレイヤーに配置することによって処理することもできます。

前提条件レイヤの特性

前提条件レイヤーには、次の特性があります。

  • 前提条件レイヤーは、 作成に使用されるアプリレイヤーには含まれません
  • 作成するアプリレイヤーとその前提条件レイヤーのそれぞれは、同じ OS レイヤーを使用する必要があります。
  • アプリレイヤーにバージョンを追加する場合前提条件レイヤーはデフォルトで含まれません 。レイヤーにバージョンを追加するたびに、1 つ以上の前提条件レイヤーを選択する必要があります。
アプリレイヤーの作成またはクローン