Citrix Virtual Apps and Desktops

Microsoft Azure Resource Managerクラウド環境

Citrix Virtual Apps and Desktops環境でMicrosoft Azure Resource Managerを使用して仮想マシンをプロビジョニングする場合は、このガイダンスに従ってください。

ここでは、以下の内容を熟知していることを前提とします:

Azureのオンデマンドプロビジョニング

Azureのオンデマンドプロビジョニングでは、VMは、プロビジョニング完了後、Citrix Virtual Apps and Desktopsで電源投入操作が開始されたときにのみ作成されます。

MCSを使用してAzure Resource Managerでマシンカタログを作成する場合、Azureのオンデマンドプロビジョニング機能は次のことを実現します:

  • ストレージコストを削減する。
  • カタログ作成を高速化する

MCSカタログを作成すると、Azure Portalにリソースグループ内のネットワークセキュリティグループ、ネットワークインターフェイス、基本イメージ、IDディスクが表示されます。

Azure Portalでは、Citrix Virtual Apps and DesktopsがVMの電源投入操作を開始するまで、そのVMは表示されません。次のような違いがある2種類のマシンがあります:

  • プールされたマシンの場合、オペレーティングシステムのディスクとライトバックキャッシュは、VMが存在する場合にのみ存在します。プールされたマシンをコンソールでシャットダウンすると、VMはAzure Portalに表示されません。マシンを定期的に(たとえば、勤務時間外に)シャットダウンすると、ストレージコストを大幅に節約できます。
  • 専用マシンでは、VMの初回電源投入時にオペレーティングシステムのディスクが作成されます。Azure PortalのVMは、マシンIDが削除されるまでストレージに残ります。専用マシンをコンソールでシャットダウンすると、VMは引き続きAzure Portalに表示されます。

Azure Resource Managerへの接続

接続とリソース」では接続を作成するためのウィザードについて説明しています。以下の情報は、Azure Resource Managerの接続に固有の詳細を扱っています。

注意事項:

  • Contributor(投稿者)の役割でサービスプリンシパルを使用することをCitrixではお勧めします。ただし、最低限の権限の一覧を取得する方法については、「最低限の権限」セクションを参照してください。
  • 最初の接続を作成するときに、必要な権限付与を求めるプロンプトがAzureで表示されます。その後の接続でも認証は必要ですが、Azureでは以前の同意が記憶され、このプロンプトは再表示されません。
  • 認証に使用されるアカウントは、サブスクリプションの共同管理者である必要があります。
  • 認証に使用されるアカウントは、サブスクリプションのディレクトリのメンバーである必要があります。注意すべき2つのタイプのアカウントがあります。「職場または学校」と「個人用Microsoftアカウント」です。詳しくは、CTX219211を参照してください。
  • 既存のMicrosoftアカウントは、サブスクリプションのディレクトリのメンバーとして追加することで使用できますが、ユーザーが以前にそのディレクトリのリソースのいずれかへのゲストアクセスを許可されていた場合は、複雑になる可能性があります。この場合、必要な権限を与えないディレクトリにプレースホルダーエントリが存在し、エラーが返されることがあります。

    ディレクトリからリソースを削除してこれを修正し、明示的に追加し直します。ただし、そのアカウントがアクセスできる他のリソースに対して意図しない影響を与えるため、このオプションは注意深く実行してください。

  • 特定のアカウントが実際にメンバーであるときにディレクトリゲストとして検出されるという既知の問題があります。これは、通常、古い確立済みのディレクトリアカウントで発生します。回避策:アカウントをディレクトリに追加します。これにより適切なメンバーシップ値が取得されます。
  • リソースグループはリソースのコンテナにすぎず、そのリージョン以外のリージョンのリソースを含む場合があります。これが原因で、リソースグループのリージョンに表示されているリソースを利用できると期待した場合に、混乱を招く可能性があります。
  • ネットワークとサブネットが、必要な数のマシンをホストするのに十分な大きさであることを確認してください。これには多少先見の明が必要ですが、Microsoftが、アドレススペースの容量に関するガイダンスを示して、適切な値を指定できるようサポートします。

Azureへのホスト接続は、次の2つの方法で確立できます:

  • Azureに認証してサービスプリンシパルを作成する。
  • 以前作成されたサービスプリンシパルからの詳細を使ってAzureに接続する。

サービスプリンシパルの作成

重要:

この機能は、Azure ChinaおよびAzure Germanyのサブスクリプションではまだ利用できません。

開始する前に、Azureに認証します。次のことを確認します:

  • サブスクリプションのAzure Active Directoryテナントにユーザーアカウントがあること。
  • Azure ADのユーザーアカウントが、リソースのプロビジョニングに使用するAzureサブスクリプションの共同管理者でもあること。
  • 認証のグローバル管理者、アプリケーション管理者、またはアプリケーション開発者の権限があること。これらの権限は、ホスト接続の作成後に失効する可能性があります。役割について詳しくは、「Azure ADの組み込みロール」を参照してください。

Azureに認証してサービスプリンシパルを作成すると、Azureにアプリケーションが登録されます。登録されたアプリケーションの秘密キー(クライアントシークレット)が作成されます。登録されたアプリケーションは、クライアントシークレットを使用してAzure ADに認証します。有効期限が切れる前に、必ずクライアントシークレットを変更してください。シークレットキーの有効期限が切れる前に、コンソールに通知が表示されます。

Azureに認証してサービスプリンシパルを作成するには、接続およびリソースの追加ウィザードで次の手順を実行します:

  1. [接続] ページで [新しい接続を作成する] を選択します。次に、接続の種類として [Microsoft Azure] を選択し、Azure環境を選択します。

  2. 仮想マシンの作成にどのツールを使用するかを選択し、[次へ]を選択します。

  3. [接続の詳細] ページで、AzureサブスクリプションIDと接続の名前を入力します。サブスクリプションIDを入力すると、[新規作成]ボタンが有効になります。

    注:

    接続名は1~64文字にし、空白スペースのみにしたり記号(\/;:#.*?=<>|[]{}"'()')を含めたりすることはできません。

  4. [新規作成] を選択してから、Azure Active Directoryアカウントのユーザー名とパスワードを入力します。

  5. [サインイン] を選択します。

  6. [承認] を選択して、表示された権限をCitrix Virtual Apps and Desktopsに付与します。Citrix Virtual Apps and Desktopsによって、指定されたユーザーの代わりにAzureリソースを管理することを許可するサービスプリンシパルが作成されます。

  7. [承認] を選択すると、ウィザードの [接続] ページに戻ります。

    注:

    Azureへの認証に成功すると、[新規作成]ボタンと [既存を使用] ボタンが表示されなくなります。緑色のチェックマークが付いた「接続に成功しました」というテキストが表示され、これはAzureサブスクリプションへの接続に成功したことを示します。

  8. [接続の詳細] ページで、[次へ]を選択します。

    注:

    Azureへの認証が完了し、必要な権限の付与に同意しない限り、次のページに進むことはできません。

  9. 接続用のリソースを構成します。リソースには領域とネットワークが含まれます。

    • [リージョン] ページで領域を選択します。
    • [ネットワーク] ページで、次の手順を実行します:
      • 1~64文字のリソース名を入力して、リージョンとネットワークの組み合わせを特定できるようにします。リソース名は、空白のみにしたり記号(\/;:#.*?=<>|[]{}"'()')を含めたりすることはできません。
      • 仮想ネットワークとリソースグループのペアを選択します。(複数の仮想ネットワークを同じ名前にする場合、ネットワーク名とリソースグループをペアリングすると一意の組み合わせになります。)前のページで選択したリージョンに仮想ネットワークがない場合は、前のページに戻って仮想ネットワークのあるリージョンを選択します。
  10. [概要] ページで、設定の概要を表示し、[完了]を選択してセットアップを完了します。

以前作成されたサービスプリンシパルからの詳細を使ってAzureに接続する

手動でサービスプリンシパルを作成するには、Azure Resource Managerサブスクリプションに接続して、後述のPowerShellコマンドレットを使用します。

前提条件:

  • SubscriptionId: VDAをプロビジョニングするサブスクリプションのAzure Resource Manager SubscriptionID
  • ActiveDirectoryID:Azure ADに登録したアプリケーションのテナントID。
  • ApplicationName: Azure AD内で作成されるアプリケーションの名前。

サービスプリンシパルを作成するには、次の手順に従ってください:

  1. Azure Resource Managerサブスクリプションに接続します。

    Connect-AzAccount

  2. サービスプリンシパルを作成するAzure Resource Managerサブスクリプションを選択します。

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. ADテナントでアプリケーションを作成します。

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. サービスプリンシパルを作成します。

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. サービスプリンシパルに役割を割り当てます。

    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId

  6. PowerShellコンソールの出力ウィンドウから、ApplicationIdをメモします。このIDは、ホスト接続を作成するときに使用します。

接続およびリソースの追加ウィザードで以下を行います:

  1. [接続] ページで [新しい接続を作成する] を選択します。次に、接続の種類として [Microsoft Azure] を選択し、Azure環境を選択します。

  2. 仮想マシンの作成にどのツールを使用するかを選択し、[次へ]を選択します。

  3. [接続の詳細] ページで、AzureサブスクリプションIDと接続の名前を入力します。

    注:

    接続名は1~64文字にし、空白スペースのみにしたり記号(\/;:#.*?=<>|[]{}"'()')を含めたりすることはできません。

  4. [既存を使用] を選択します。[既存のサービスプリンシパルの詳細] ウィンドウで、既存のサービスプリンシパルに次の設定を入力します。詳細を入力すると、[保存]ボタンが有効になります。[Save] を選択します。有効な詳細を入力しない限り、このページの先には進めません。

    • サブスクリプションID。AzureサブスクリプションIDを入力します。サブスクリプションIDを取得するには、Azure Portalにサインインし、[Subscriptions]>[Overview]に移動します。
    • Active Directory ID(テナントID)。Azure ADに登録したアプリケーションのディレクトリ(テナント)IDを入力します。
    • アプリケーションID。Azure ADに登録したアプリケーションのアプリケーション(クライアント)IDを入力します。
    • アプリケーションシークレット。秘密キー(クライアントシークレット)を作成します。登録されたアプリケーションは、キーを使用してAzure ADへの認証を行います。セキュリティのために、キーを定期的に変更することをお勧めします。後でキーを取得することはできないため、必ずキーを保存してください。
    • シークレットの有効期限。アプリケーションシークレットの有効期限が切れる日付を入力します。シークレットキーの有効期限が切れる前に、コンソールに通知が表示されます。ただし、秘密キーの有効期限が切れると、エラーが発生します。

      注:

      セキュリティ上の理由から、有効期限は現在から2年を超えることはできません。

    • 認証URL。このフィールドは自動的に入力され、編集できません。
    • 管理URL。このフィールドは自動的に入力され、編集できません。
    • ストレージのサフィックス。このフィールドは自動的に入力され、編集できません。

      AzureでMCSカタログを作成するには、次のエンドポイントへのアクセスが必要です。これらのエンドポイントにアクセスすると、ネットワークとAzure Portalおよびそのサービスとの間の接続が最適化されます。

  5. [保存] を選択すると、[接続の詳細]ページに戻ります。[次へ] を選択して、次のページに進みます。

  6. 接続用のリソースを構成します。リソースには領域とネットワークが含まれます。

    • [リージョン] ページで領域を選択します。
    • [ネットワーク] ページで、次の手順を実行します:
      • 1~64文字のリソース名を入力して、リージョンとネットワークの組み合わせを特定できるようにします。リソース名は、空白のみにしたり記号(\/;:#.*?=<>|[]{}"'()')を含めたりすることはできません。
      • 仮想ネットワークとリソースグループのペアを選択します。(複数の仮想ネットワークを同じ名前にする場合、ネットワーク名とリソースグループをペアリングすると一意の組み合わせになります。)前のページで選択したリージョンに仮想ネットワークがない場合は、前のページに戻って仮想ネットワークのあるリージョンを選択します。
  7. [概要] ページで、設定の概要を表示し、[完了]を選択してセットアップを完了します。

Azure Resource Managerイメージを使用してマシンカタログを作成する

イメージは、マシンカタログ内にVMを作成するために使用されるAzure Compute Gallery内のイメージ定義のイメージバージョンの場合もあれば、ディスクまたはスナップショットの場合もあります。マシンカタログを作成する前に、Azure Resource Managerでイメージを作成します。イメージについて詳しくは、「マシンカタログの作成」を参照してください。

トラステッド起動が有効になっているイメージまたはスナップショットを選択する場合は、[セキュリティの種類] としてトラステッド起動が選択されているマシンプロファイルを使用する必要があります。次に、[マシンプロファイル]の値を指定することにより、SecureBootとvTPMを有効または無効にできます。Azureのトラステッド起動については、「Azure仮想マシンのトラステッド起動」を参照してください。

マシンカタログは、カスタムプロパティで定義されている次のプロパティを使用します:

  • アベイラビリティゾーン
  • 専用ホストグループID
  • ディスク暗号化セットID
  • OSの種類
  • ライセンスの種類
  • ストレージの種類

これらのカスタムプロパティが明示的に定義されていない場合、プロパティ値はマシンプロファイルとして使用されているARMテンプレートスペックの指定または仮想マシンのいずれかから設定されます。また、ServiceOfferingが指定されていない場合は、マシンプロファイルから設定されます。

注:

一部のプロパティがマシンプロファイルで指定されておらず、カスタムプロパティで定義されていないとき、プロパティのデフォルト値が常に適用されます(該当する場合)。

次のセクションでは、CustomPropertiesですべてのプロパティが定義されている場合、または値がMachineProfileから由来している場合、New-ProvSchemeおよびSet-ProvSchemeでのシナリオについて説明します。

New-ProvSchemeシナリオ

  • MachineProfileですべてのプロパティが定義され、CustomPropertiesは定義されていません。例:

    New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm"

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="OSType" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="DiskEncryptionSetId" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="DedicatedHostGroupId" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="Zones" Value="<mpA-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • MachineProfileで一部のプロパティが定義され、CustomPropertiesは定義されていません。例:MachineProfileにはLicenseTypeとOsTypeのみが含まれます。

    New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm"

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="OSType" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<mpA-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • MachineProfileとCustomPropertiesの両方がすべてのプロパティを定義します。例:

    New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm" -CustomProperties $CustomPropertiesA

    カスタムプロパティが優先されます。カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="OSType" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="DiskEncryptionSetId" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="DedicatedHostGroupId" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="Zones" Value="<CustomPropertiesA-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • 一部のプロパティはMachineProfileで定義され、一部のプロパティはCustomPropertiesで定義されます。例:
    • CustomPropertiesは、LicenseTypeとStorageAccountTypeを定義します
    • MachineProfileは、LicenseType、OsType、Zonesを定義します

    New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm" -CustomProperties $CustomPropertiesA

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="OSType" Value="<mpA-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<CustomPropertiesA-value>"/>
     <Property xsi:type="StringProperty" Name="Zones" Value="<mpA-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • 一部のプロパティはMachineProfileで定義され、一部のプロパティはCustomPropertiesで定義されます。また、ServiceOfferingは定義されていません。例:

    • CustomPropertiesはStorageTypeを定義します
    • MachineProfileはLicenseTypeを定義します
     New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mp.vm"
     -ServiceOffering "XDHyp:\HostingUnits\azureunit\serviceoffering.folder<explicit-machine-size>.serviceoffering"
     <!--NeedCopy-->
    

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select ServiceOffering
     serviceoffering.folder<explicit-machine-size>.serviceoffering
    
     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="explicit-storage-type"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="value-from-machineprofile"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • OsTypeがCustomPropertiesにもMachineProfileにもない場合、次のようになります:
    • 値はマスターイメージから読み取られます。
    • マスターイメージが非管理対象ディスクの場合、OsTypeはWindowsに設定されます。

    例:

    New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm" -MasterImageVM "XDHyp:\HostingUnits\azureunit\image.folder\linux-master-image.manageddisk"

    マスターイメージの値は、カスタムプロパティに書き込まれます(この場合はLinux)。

     Get-ProvScheme | select CustomProperties
    <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="OSType" Value="Linux"/>
     </CustomProperties>
     <!--NeedCopy-->
    

Set-ProvSchemeシナリオ

  • 既存のカタログ:
    • StorageAccountTypeおよびOsTypeのCustomProperties
    • Zonesを定義するMachineProfile mpA.vm

    更新:

    • StorageAccountTypeを定義するMachineProfile mpB.vm
    • LicenseTypeとOsTypeを定義するカスタムプロパティの新しいセット$CustomPropertiesB

    Set-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpB.vm" -CustomProperties $CustomPropertiesB

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<mpB-value>"/>
     <Property xsi:type="StringProperty" Name="OSType" Value="<CustomPropertiesB-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<CustomPropertiesB-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • 既存のカタログ:
    • StorageAccountTypeおよびOsTypeのCustomProperties
    • StorageAccountTypeとLicenseTypeを定義するMachineProfile mpA.vm

    更新:

    • StorageAccountTypeとOsTypeを定義するカスタムプロパティの新しいセット$CustomPropertiesB

    Set-ProvScheme -CustomProperties $CustomPropertiesB

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<CustomPropertiesB-value>"/>
     <Property xsi:type="StringProperty" Name="OSType" Value="<CustomPropertiesB-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<mp-A-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    
  • 既存のカタログ:
    • StorageAccountTypeおよびOsTypeのCustomProperties
    • Zonesを定義するMachineProfile mpA.vm

    更新:

    • StorageAccountTypeとLicenseTypeを定義するMachineProfile mpB.vm
    • ServiceOfferingは指定されていません

    Set-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpB.vm"

    カタログのカスタムプロパティとして、次の値が設定されています:

     Get-ProvScheme | select ServiceOffering
     serviceoffering.folder<value-from-machineprofile>.serviceoffering
    
     Get-ProvScheme | select CustomProperties
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<mpB-value>"/>
     <Property xsi:type="StringProperty" Name="OSType" Value="<prior-CustomProperties-value>"/>
     <Property xsi:type="StringProperty" Name="LicenseType" Value="<mpB-value>"/>
     </CustomProperties>
     <!--NeedCopy-->
    

Azureの調整

Azure Resource Managerはサブスクリプションおよびテナントの要求を調整し、プロバイダーの特定のニーズに対応して定義された制限を基にルーティングします。詳しくは、Microsoft社のサイトの「Resource Managerの要求のスロットル」を参照してください。制限は、サブスクリプションやテナントで多数のマシンの管理が問題となりうる場合に存在します。たとえば、多数のマシンを含むサブスクリプションは、電源操作に関連してパフォーマンスの問題が発生することがあります。

ヒント:

詳しくは「Machine Creation ServicesによるAzureのパフォーマンスの向上」を参照してください。

これらの問題の影響を軽減するためにMCS内部の調整を削除して、より高い値のAzureの要求クォータを利用することができます。

大量のサブスクリプション(1,000台の仮想マシンを含む場合など)で仮想マシンをオンまたはオフにする場合、次の最適設定をお勧めします:

  • 絶対同時操作:500
  • 1分あたりの最大新規操作:2000
  • 最大同時操作:500

MCSは、デフォルトで最大500の同時操作をサポートします。または、Remote PowerShell SDKを使用して、同時操作の最大数を設定することもできます。

PowerShellプロパティMaximumConcurrentProvisioningOperationsを使用して、同時Azureプロビジョニング操作の最大数を指定します。このプロパティを使用するときは、次のことを考慮してください:

  • MaximumConcurrentProvisioningOperationsのデフォルト値は500です。
  • PowerShellコマンドSet-itemを使用してMaximumConcurrentProvisioningOperationsパラメーターを構成します。

Azureリソースグループ

Azureプロビジョニングのリソースグループは、アプリケーションとデスクトップをユーザーに提供するVMをプロビジョニングする方法を提供します。MCSマシンカタログを作成するときに既存の空のAzureリソースグループを追加するか、新しいリソースグループを作成することができます。Azureリソースグループについて詳しくは、Microsoft社のドキュメントを参照してください。

Azureリソースグループの使用

Azureリソースグループごとの仮想マシン、管理対象ディスク、スナップショット、およびイメージの数に制限はありません(Azureリソースグループごとに仮想マシンは240、管理対象ディスクは800という数の制限はなくなりました)。

  • フルスコープのサービスプリンシパルを使用してマシンカタログを作成する場合、MCSは1つのAzureリソースグループのみを作成し、カタログのこのグループを使用します。
  • スコープの狭いサービスプリンシパルを使用してマシンカタログを作成する場合、事前に作成された空のAzureリソースグループを指定する必要があります。

Azureエフェメラルディスク

Azureエフェメラルディスクを使用すると、キャッシュディスクまたは一時ディスクを再利用して、Azure対応の仮想マシンのOSディスクを保存できます。この機能は、標準のHDDディスクよりも高性能のSSDディスクを必要とするAzure環境で役立ちます。エフェメラルディスクを使用するには、New-ProvSchemeを実行するとき、カスタムプロパティUseEphemeralOsDisktrueに設定する必要があります。

注:

カスタムプロパティUseEphemeralOsDiskfalseに設定されているか、値が指定されていない場合、プロビジョニングされたすべてのVDAは引き続きプロビジョニングされたOSディスクを使用します。

以下は、プロビジョニングスキームで使用するカスタムプロパティのセットの例です:

"CustomProperties": [
            {
                "Name": "UseManagedDisks",
                "Value": "true"
            },
            {
                "Name": "StorageType",
                "Value": "Standard_LRS"
            },
            {
                "Name": "UseSharedImageGallery",
                "Value": "true"
            },
            {
                "Name": "SharedImageGalleryReplicaRatio",
                "Value": "40"
            },
            {
                "Name": "SharedImageGalleryReplicaMaximum",
                "Value": "10"
            },
            {
                "Name": "LicenseType",
                "Value": "Windows_Server"
            },
            {
                "Name": "UseEphemeralOsDisk",
                "Value": "true"
            }
        ],
<!--NeedCopy-->

エフェメラルOSディスクを使用してマシンを作成する方法

エフェメラルOSディスクは、CustomPropertiesパラメーターのUseEphemeralOsDiskプロパティに基づいて制御されます。

エフェメラルディスクに関する重要な考慮事項

New-ProvSchemeを使用してエフェメラルOSディスクのプロビジョニングをするには、次の制約を考慮してください:

  • カタログに使用されるVMサイズは、エフェメラルOSディスクをサポートする必要があります。
  • VMサイズに関連付けられているキャッシュまたは一時ディスクのサイズは、OSディスクのサイズ以上である必要があります。
  • 一時ディスクのサイズは、キャッシュディスクのサイズよりも大きい必要があります。

次の場合にも、これらの問題を考慮してください:

  • プロビジョニングスキームを作成する場合。
  • プロビジョニングスキームを変更する場合。
  • イメージを更新する場合。

AzureエフェメラルディスクとMachine Creation Services(MCS)ストレージ最適化(MCS I/O)

AzureエフェメラルOSディスクとMCS I/Oを同時に有効にすることはできません。

重要な考慮事項は次のとおりです:

  • エフェメラルOSディスクとMCS I/Oの両方を同時に有効にしてマシンカタログを作成することはできません。

  • New-ProvSchemeまたはSet-ProvSchemetrueに設定されたPowerShellパラメーター (UseWriteBackCacheおよびUseEphemeralOsDisk)を使用すると、対応するエラーメッセージが表示されて失敗します。
  • 両方の機能を有効にして作成した既存のマシンカタログについては、次のことができます:
    • マシンカタログの更新。
    • VMの追加または削除。
    • マシンカタログの削除。

Azureサーバー側暗号化

Citrix Virtual Apps and DesktopsおよびCitrix DaaSは、Azure Key Vaultを使用してAzure Managed Disksの顧客が管理する暗号化キーをサポートします。このサポートにより、独自の暗号化キーを使用してマシンカタログの管理対象ディスクを暗号化して、組織およびコンプライアンスの要件を管理できます。詳しくは、「Azure Disk Storageのサーバー側暗号化」を参照してください。

管理対象ディスクにこの機能を使用する場合:

  • ディスクが暗号化されているキーを変更するには、DiskEncryptionSetの現在のキーを変更します。DiskEncryptionSetに関連付けられているすべてのリソースは、新しいキーで暗号化されるように変更されます。

  • キーを無効にするか削除すると、そのキーを使用するディスクのあるVMはすべて自動的にシャットダウンします。シャットダウン後、キーを再度有効にするか、新しいキーを割り当てない限り、VMは使用できません。このキーを使用するカタログの電源をオンにすることはできません。また、VMをカタログに追加することもできません。

顧客が管理する暗号化キーを使用する場合の重要な考慮事項

この機能を使用するときは、次のことに注意してください:

  • 顧客が管理するキーに関連するすべてのリソース(Azure Key Vault、ディスク暗号化セット、VM、ディスク、スナップショット)は、同じサブスクリプションとリージョンに配置される必要があります。

  • 顧客が管理する暗号化キーを有効にすると、後で無効にすることはできません。顧客が管理する暗号化キーを無効にする、または削除する場合は、顧客が管理する暗号化キーを使用していない別の管理対象ディスクにすべてのデータをコピーします。

  • サーバー側暗号化と顧客が管理するキーを使用して暗号化されたカスタムイメージから作成されたディスクは、同じ顧客が管理するキーを使用して暗号化する必要があります。これらのディスクは同じサブスクリプションでカバーされる必要があります。

  • サーバー側暗号化と顧客が管理するキーを使用して暗号化されたディスクから作成されたスナップショットは、同じ顧客が管理するキーを使用して暗号化する必要があります。

  • 顧客が管理するキーで暗号化されたディスク、スナップショット、イメージは、別のリソースグループおよびサブスクリプションに移動できません。

  • Azure Disk Encryptionを使用して現在暗号化されている、または以前に暗号化された管理対象ディスクは、顧客が管理するキーを使用して暗号化することはできません。

  • リージョンごとのディスク暗号化セットの制限については、Microsoft社のサイトを参照してください。

注:

Azureサーバー側暗号化の構成については、「クイックスタート:Azure Portalを使用してキーコンテナを作成する」を参照してください。

Azureの顧客が管理する暗号キー

マシンカタログを作成するときに、カタログでプロビジョニングされるマシンのデータを暗号化するかどうかを選択できます。顧客が管理する暗号化キーを使用したサーバー側暗号化により、管理対象ディスクレベルで暗号化を管理し、カタログ内のマシン上のデータを保護できます。ディスク暗号化セット(DES)は、顧客が管理するキーを表します。この機能を使用するには、最初にAzureでDESを作成する必要があります。DESの形式は次のとおりです:

  • /subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/Sample-RG/providers/Microsoft.Compute/diskEncryptionSets/SampleEncryptionSet

一覧からDESを選択します。選択したDESは、リソースと同じサブスクリプションおよびリージョンに存在する必要があります。イメージがDESで暗号化されている場合は、マシンカタログを作成するときに同じDESを使用します。カタログの作成後にDESを変更することはできません。

暗号化キーを使用してカタログを作成し、後でAzureで対応するDESを無効にすると、カタログ内のマシンの電源をオンにしたり、カタログにマシンを追加したりできなくなります。

Azure専用ホスト

MCSを使用して、Azure専用ホストでVMをプロビジョニングできます。Azure専用ホストでVMをプロビジョニングする前に、以下を実行します:

  • ホストグループを作成します。
  • そのホストグループにホストを作成します。
  • カタログと仮想マシンを作成するために十分なホスト容量が確保されていることを確認してください。

管理者は、次のPowerShellスクリプトで定義されたホストテナントを持つマシンのカタログを作成できます:

New-ProvScheme <otherParameters> -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <Property xsi:type="StringProperty" Name="HostGroupId" Value="myResourceGroup/myHostGroup" />
 ...other Custom Properties...
 </CustomProperties>
<!--NeedCopy-->

MCSを使用して、Azure専用ホストで仮想マシンをプロビジョニングする場合、次の点を考慮してください:

  • 専用ホストはカタログプロパティであり、カタログの作成後に変更することはできません。専用テナントは現在、Azureではサポートされていません。
  • HostGroupIdパラメーターを使用する場合は、ホスティングユニットの領域に事前構成されたAzureホストグループが必要です。
  • Azureの自動配置が必要です。この機能は、ホストグループに関連付けられたサブスクリプションをオンボードするように要求します。詳しくは、「Azure専用ホストのVMスケールセット - パブリックプレビュー」を参照してください。自動配置が有効になっていない場合、MCSはカタログの作成中にエラーをスローします。

AzureでMCSプロビジョニングされたマシンの公開イメージリポジトリとしてAzure Shared Image Galleryを使用します。公開イメージをギャラリーに保存して、OSディスクの作成とハイドレーションを高速化し、非永続仮想マシンの起動時間とアプリケーションの起動時間を改善できます。Shared Image Galleryには、次の3つの要素が含まれています:

  • ギャラリー:イメージはここに保存されます。MCSは、マシンカタログごとに1つのギャラリーを作成します。
  • ギャラリーイメージの定義:この定義には、公開イメージに関する情報(オペレーティングシステムの種類と状態、Azureリージョン)が含まれます。MCSは、カタログ用に作成されたイメージごとに1つのイメージ定義を作成します。
  • ギャラリーイメージバージョン: Shared Image Galleryの各イメージには複数のバージョンを含めることができ、各バージョンには異なるリージョンに複数のレプリカを含めることができます。各レプリカは、公開イメージの完全なコピーです。

注:

Shared Image Gallery機能は、管理対象ディスクでのみ機能します。従来のマシンカタログでは使用できません。

詳しくは、「Azure Shared Image Galleryの概要」を参照してください。

Shared Image Galleryを構成する

New-ProvSchemeコマンドを使用することで、Shared Image Galleryをサポートする新しいプロビジョニングスキームを作成できます。Set-ProvSchemeコマンドでは、プロビジョニングスキームでのこの機能の有効化または無効化と、レプリカの比率およびレプリカの最大値の変更が可能です。

Shared Image Gallery機能をサポートするために、プロビジョニングスキームに3つのカスタムプロパティが追加されました:

UseSharedImageGallery

  • Shared Image Galleryを使用して公開イメージを保存するかどうかを定義します。Trueに設定すると、イメージはShared Image Galleryイメージとして保存されます。Trueに設定しない場合、イメージはスナップショットとして保存されます。
  • 有効な値は、TrueおよびFalseです。
  • プロパティが定義されていない場合、デフォルト値はFalseです。

SharedImageGalleryReplicaRatio

  • ギャラリーイメージバージョンのレプリカに対するマシンの比率を定義します。
  • 有効な値は、0より大きい整数です。
  • プロパティが定義されていない場合は、デフォルト値が使用されます。永続OSディスクのデフォルト値は1000であり、非永続OSディスクのデフォルト値は40です。

SharedImageGalleryReplicaMaximum

  • 各ギャラリーイメージバージョンのレプリカの最大数を定義します。
  • 有効な値は、0より大きい整数です。
  • プロパティが定義されていない場合、デフォルト値は10です。
  • Azureは現在、ギャラリーイメージの単一バージョンに対して最大10個のレプリカをサポートしています。プロパティがAzureでサポートされている値よりも大きい値に設定されている場合、MCSは指定された値を使用しようとします。Azureはエラーを生成し、MCSログでは現在のレプリカ数が変更されずに残ります。

ヒント:

Shared Image Galleryを使用してMCSプロビジョニングされたカタログの公開イメージを保存する場合、MCSは、カタログ内のマシンの数、レプリカの比率、およびレプリカの最大数に基づいて、ギャラリーイメージバージョンのレプリカ数を設定します。レプリカ数は、カタログ内のマシンの数をレプリカ比率(最も近い整数値に切り上げ)で除算し、最大レプリカ数で値を制限することによって計算されます。たとえば、レプリカの比率が20で最大5の場合、0〜20台のマシンで1つのレプリカが作成され、21〜40台で2つ、41〜60台で3つ、61〜80台で4つ、81台以上で5つのレプリカが作成されます。

ユースケース:Shared Image Galleryのレプリカ比率とレプリカの最大値を更新する

既存のマシンカタログはShared Image Galleryを使用します。Set-ProvSchemeコマンドを使用して、カタログ内の既存のすべてのマシンおよび将来のマシンのカスタムプロパティを更新します:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="True"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaRatio" Value="30"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaMaximum" Value="20"/></CustomProperties>'
<!--NeedCopy-->

ユースケース:スナップショットカタログをShared Image Galleryカタログに変換する

このユースケースの場合:

  1. UseSharedImageGalleryフラグをTrueに設定してSet-ProvSchemeを実行します。オプションで、SharedImageGalleryReplicaRatioおよびSharedImageGalleryReplicaMaximumプロパティを含めます。
  2. カタログを更新します。
  3. マシンの電源を入れ直して、強制的に更新します。

例:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="True"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaRatio" Value="30"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaMaximum" Value="20"/></CustomProperties>'
<!--NeedCopy-->

ヒント:

パラメーターSharedImageGalleryReplicaRatioおよびSharedImageGalleryReplicaMaximumは必須ではありません。Set-ProvSchemeコマンドが完了した後、Shared Image Galleryイメージはまだ作成されていません。ギャラリーを使用するようにカタログを構成すると、次回のカタログ更新操作で公開イメージがギャラリーに保存されます。カタログ更新コマンドは、ギャラリー、ギャラリーイメージ、およびイメージバージョンを作成します。マシンの電源を入れ直すとマシンが更新されます。そのとき、必要に応じてレプリカ数が更新されます。それ以降、既存のすべての非永続マシンはShared Image Galleryイメージを使用してリセットされ、新しくプロビジョニングされたすべてのマシンはイメージを使用して作成されます。古いスナップショットは、数時間以内に自動的にクリーンアップされます。

ユースケース:Shared Image Galleryカタログをスナップショットカタログに変換する

このユースケースの場合:

  1. UseSharedImageGalleryフラグをFalseに設定するか、定義せずにSet-ProvSchemeを実行します。
  2. カタログを更新します。
  3. マシンの電源を入れ直して、強制的に更新します。

例:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="False"/></CustomProperties>'
<!--NeedCopy-->

ヒント:

スナップショットからShared Image Galleryカタログへの更新とは異なり、各マシンのカスタムデータは、新しいカスタムプロパティを反映するようにまだ更新されていません。次のコマンドを実行して、元のShared Image Galleryのカスタムプロパティを表示します:Get-ProvVm -ProvisioningSchemeName catalog-nameSet-ProvSchemeコマンドが完了した後、イメージスナップショットはまだ作成されていません。ギャラリーを使用しないようにカタログを構成すると、次回のカタログ更新操作で公開イメージがスナップショットとして保存されます。その時点から、既存のすべての非永続マシンはスナップショットを使用してリセットされ、新しくプロビジョニングされたすべてのマシンはスナップショットから作成されます。マシンの電源を入れ直すと更新され、そのときカスタムマシンデータが更新されて、UseSharedImageGalleryFalseに設定されていることが反映されます。古いShared Image Galleryアセット(ギャラリー、イメージ、バージョン)は、数時間以内に自動的にクリーンアップされます。

指定されたアベイラビリティゾーンへのマシンのプロビジョニング

Azure環境の特定のアベイラビリティゾーンにマシンをプロビジョニングできます。これは、PowerShellを使用して実行できます。

注:

ゾーンが指定されていない場合、MCSはAzureにマシンをリージョン内に配置させます。複数のゾーンが指定されている場合、MCSはマシンをそれらにランダムに分散します。

PowerShellを使用したアベイラビリティゾーンの構成

PowerShellを使用する場合、Get-Itemでオファリングのインベントリアイテムを表示できます。たとえば、米国東部リージョン Standard_B1lsのサービスオファリングを表示するには、以下を実行します:

$serviceOffering = Get-Item -path "XDHyp:\Connections\my-connection-name\East US.region\serviceoffering.folder\Standard_B1ls.serviceoffering"
<!--NeedCopy-->

ゾーンを表示するには、アイテムのAdditionalDataパラメーターを使用します:

$serviceOffering.AdditionalData

アベイラビリティゾーンが指定されていない場合、マシンのプロビジョニング方法に変更はありません。

PowerShellを使用してアベイラビリティゾーンを構成するには、New-ProvScheme操作で、使用可能なZonesカスタムプロパティを使用します。Zonesプロパティは、マシンをプロビジョニングするアベイラビリティゾーンの一覧を定義します。これらのゾーンには、1つまたは複数のアベイラビリティゾーンを含めることができます。たとえば、Zones 1と3の場合は、<Property xsi:type="StringProperty" Name="Zones" Value="1, 3"/> のようになります。

Set-ProvSchemeコマンドを使用して、プロビジョニングスキームのゾーンを更新します。

無効なゾーンが指定された場合、プロビジョニングスキームは更新されず、無効なコマンドを修正する方法を示すエラーメッセージが表示されます。

ヒント:

無効なカスタムプロパティを指定すると、プロビジョニングスキームは更新されず、関連するエラーメッセージが表示されます。

Azureエフェメラルディスク

Azureエフェメラルディスクを使用すると、キャッシュディスクまたは一時ディスクを再利用して、Azure対応の仮想マシンのOSディスクを保存できます。この機能は、標準のHDDディスクよりも高性能のSSDディスクを必要とするAzure環境で役立ちます。

注:

永続カタログでは、エフェメラルOSディスクはサポートされていません。

エフェメラルOSディスクでは、プロビジョニングスキームで管理対象ディスクとShared Image Galleryを使用する必要があります。詳しくは、「Azure Shared Image Gallery」を参照してください。

PowerShellを使用してエフェメラルディスクを構成する

カタログのAzureエフェメラルOSディスクを構成するには、Set-ProvSchemeUseEphemeralOsDiskパラメーターを使用します。UseEphemeralOsDiskパラメーターの値を「true」に設定します。

注:

この機能を使用するには、パラメーターのUseManagedDisksUseSharedImageGalleryも有効にする必要があります。

例:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
<Property xsi:type="StringProperty" Name="UseEphemeralOsDisk" Value="true" />
</CustomProperties>'
<!--NeedCopy-->

エフェメラルOS一時ディスクの保存

エフェメラルOSディスクをVM一時ディスクまたはリソースディスクに保存するオプションがあります。この機能により、キャッシュがないか、キャッシュが不十分なVMで、エフェメラルOSディスクを使用できます。このようなVMには、Ddv4などのエフェメラルOSディスクを保存するための一時ディスクまたはリソースディスクがあります。

以下に注意してください:

  • エフェメラルディスクは、VMキャッシュディスクまたはVMの一時(リソース)ディスクのいずれかに保存されます。キャッシュディスクがOSディスクの内容を保持するのに十分な大きさでない場合を除き、キャッシュディスクは一時ディスクよりも優先されます。
  • 更新の際は、キャッシュディスクよりも大きいが一時ディスクよりも小さい新しいイメージにより、エフェメラルOSディスクがVMの一時ディスクに置き換えられます。

電源を入れ直したときにプロビジョニングされた仮想マシンを保持する

電源を入れ直したときに、プロビジョニングされた仮想マシンを保持するかどうかを選択します。PowerShellパラメーターNew-ProvScheme CustomPropertiesを使用します。このパラメーターではプロパティPersistVmを追加することができ、これを使用して、電源を入れ直したときにプロビジョニングされた仮想マシンが保持されるかどうかを指定できます。PersistVmプロパティをtrueに設定して、電源がオフのときに仮想マシンが保持されるように設定するか、プロパティをfalseに設定して、電源がオフのときに仮想マシンが保持されないように設定します。

注:

PersistVmプロパティは、CleanOnBootおよびUseWriteBackCacheのプロパティが有効なプロビジョニングスキームにのみ適用されます。非永続仮想マシンにPersistVmプロパティが指定されていない場合、非永続仮想マシンは電源がオフのときにAzure環境から削除されます。

次の例では、New-ProvScheme CustomPropertiesパラメーターでPersistVmプロパティがtrueに設定されています:

<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS" />
<Property xsi:type="StringProperty" Name="PersistWBC" Value="false" />
<Property xsi:type="StringProperty" Name="PersistOsDisk" Value="true" />
<Property xsi:type="StringProperty" Name="PersistVm" Value="true" />
<Property xsi:type="StringProperty" Name="ResourceGroups" Value="demo-resourcegroup" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
</CustomProperties>
<!--NeedCopy-->

次の例では、New-ProvScheme CustomPropertiesパラメーターでPersistVMtrueに設定することで、ライトバックキャッシュが維持されます:

 New-ProvScheme
 -AzureAdJoinType "None"
 -CleanOnBoot
 -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"Standard_LRS`" /><Property xsi:type=`"StringProperty`" Name=`"PersistWBC`" Value=`"false`" /><Property xsi:type=`"StringProperty`" Name=`"PersistOsDisk`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"PersistVm`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"ResourceGroups`" Value=`"demo-resourcegroup`" /><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Client`" /></CustomProperties>"
 -HostingUnitName "demo"
 -IdentityPoolName "NonPersistent-MCSIO-PersistVM"
 -MasterImageVM "XDHyp:\HostingUnits\demo\image.folder\scale-test.resourcegroup\demo-snapshot.snapshot"
 -NetworkMapping @ {"0"="XDHyp:\HostingUnits\demo\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\ji-test.resourcegroup\jitest-vnet.virtualprivatecloud\default.network"}
-ProvisioningSchemeName "NonPersistent-MCSIO-PersistVM"
 -ServiceOffering "XDHyp:\HostingUnits\demo\serviceoffering.folder\Standard_B2ms.serviceoffering" -UseWriteBackCache
 -WriteBackCacheDiskSize 127
 -WriteBackCacheMemorySize 256
 <!--NeedCopy-->

ヒント:

PersistVmプロパティは、プロビジョニングされた仮想マシンを保持するかどうかを決定します。PersistOsdiskプロパティは、OSディスクを永続化するかどうかを決定します。プロビジョニングされた仮想マシンを保持するには、最初にOSディスクを保持します。仮想マシンを削除してからでないと、OSディスクを削除することはできません。PersistVmパラメーターを指定せずにPersistOsdiskプロパティを使用することができます。

ストレージの種類

MCSを使用するAzure環境の仮想マシン用に異なるストレージの種類を選択します。ターゲットVMの場合、MCSは以下をサポートします:

  • OSディスク:プレミアムSSD、SSDまたはHDD
  • ライトバックキャッシュディスク:プレミアムSSD、SSD、またはHDD

これらのストレージの種類を使用するときは、次の点を考慮してください:

  • VMが選択したストレージの種類をサポートしていることを確認してください。
  • 構成でAzureエフェメラルディスクを使用している場合、ライトバックキャッシュディスク設定のオプションは使用できません。

ヒント:

StorageTypeは、OSの種類とストレージアカウント用に構成されています。WBCDiskStorageTypeは、ライトバックキャッシュのストレージの種類用に構成されています。通常のカタログの場合、StorageTypeが必要です。WBCDiskStorageTypeが構成されていない場合は、WBCDiskStorageTypeのデフォルトとしてStorageTypeが使用されます。

WBCDiskStorageTypeが構成されていない場合、WBCDiskStorageTypeのデフォルトとしてStorageTypeが使用されます

ストレージの種類の構成

VM用のストレージの種類を構成するには、New-ProvSchemeStorageTypeパラメーターを使用します。StorageTypeパラメーターの値を、いずれかのサポートされているストレージの種類に設定します。

以下は、プロビジョニングスキームで使用するCustomPropertiesパラメーターのセットの例です:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="StorageType" Value="Premium_LRS" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
</CustomProperties>'
<!--NeedCopy-->

プロビジョニングされたマシンを現在のプロビジョニングスキームの状態に更新する

Set-ProvSchemeはプロビジョニングスキームを変更します。ただし、既存のマシンには影響しません。Request-ProvVMUpdateコマンドを使用して、現在のプロビジョニングスキームを既存の永続的または非永続的マシン、あるいはマシンのセットに適用できます。現在、この機能でサポートされているプロパティ更新はServiceOfferingです。

以下を更新できます:

  • 単一のVM。
  • プロビジョニングスキームIDに関連付けられている特定のVMまたはすべての既存のVMのリスト。
  • プロビジョニングスキーム名に関連付けられている特定のVMまたはすべての既存のVMのリスト。

既存のVMを更新するには:

  1. 既存のマシンの構成を確認します。例:

    ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion
    <!--NeedCopy-->
    
  2. プロビジョニングスキームを更新します。例:

    ProvisioningSchemeName “my-catalog” –ServiceOffering “Standard_D16_v3”
    <!--NeedCopy-->
    
  3. 既存のマシンの更新を要求します。例:

    • すべての既存のマシンを更新するには:

       Request-ProvVMUpdate –ProvisioningSchemeName “my-catalog”
       Get-ProvVM | select VMName,
       ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion
       <!--NeedCopy-->
      
    • 特定のマシンのリストを更新するには:

       Request-ProvVMUpdate -ProvisioningSchemeName "my-catalog" -VMName "vm1","vm2"
       Get-ProvVM | select VMName,
       ProvisioningSchemeVersion
       <!--NeedCopy-->
      
    • Get-ProvVMからの入力に基づいてマシンを更新するには:

       Get-ProvVM -ProvisioningSchemeName "my-catalog" | Request-ProvVMUpdate
       Get-ProvVM | select VMName,
       ProvisioningSchemeVersion
       <!--NeedCopy-->
      
  4. マシンを再起動します。次回、電源をオンにするときに、マシンのProvisioningSchemeVersionが現在のプロビジョニングスキームのバージョンと一致するように更新され、ProvisioningSchemeUpdateRequestedフィールドがクリアされます。

Azure VM、スナップショット、OSディスク、およびギャラリーイメージ定義の情報の取得

OSディスクと種類、スナップショット、ギャラリーイメージ定義など、Azure VMの情報を表示できます。この情報は、マシンカタログが割り当てられている場合にマスターイメージ上のリソースに関して表示されます。この機能を使用して、LinuxまたはWindowsイメージを表示および選択します。PowerShellプロパティTemplateIsWindowsTemplateAdditionDatafieldパラメーターに追加されました。このフィールドには、Azure固有の情報(VMタイプ、OSディスク、ギャラリーイメージ情報、OSの種類情報)が含まれます。TemplateIsWindowsTemplateTrueに設定することで、OSの種類がWindowsであることを示します。TemplateIsWindowsTemplateFalseに設定することで、OSの種類がLinuxであることを示します。

ヒント:

PowerShellプロパティTemplateIsWindowsTemplateによって表示される情報は、Azure APIから取得されます。場合によっては、このフィールドは空である可能性があります。たとえば、OSの種類をスナップショットから取得できないため、データディスクからのスナップショットにはTemplateIsWindowsTemplateフィールドが含まれません。

たとえば、PowerShellを使用してWindows OSの種類のAzure VMパラメーターAdditionDataTrueに設定します:

PS C:\Users\username> (get-item XDHyp:\HostingUnits\mynetwork\image.folder\username-dev-testing-rg.resourcegroup\username-dev-tsvda.vm).AdditionalData
Key Value
ServiceOfferingDescription Standard_B2ms
HardDiskSizeGB 127
ResourceGroupName FENGHUAJ-DEV-TESTING-RG
ServiceOfferingMemory 8192
ServiceOfferingCores 2
TemplateIsWindowsTemplate True
ServiceOfferingWithTemporaryDiskSizeInMb 16384
SupportedMachineGenerations Gen1,Gen2
<!--NeedCopy-->

トラステッド起動を使用したマシンカタログ

トラステッド起動でマシンカタログを正常に作成するには、次を使用します:

  • トラステッド起動を使用したマシンプロファイル
  • トラステッド起動をサポートするVMサイズ
  • トラステッド起動をサポートするWindows VMバージョン。現在、Windows 10、Windows Server 2016、2019、および2022はトラステッド起動をサポートしています。

重要:

トラステッド起動には、新しいVMの作成が必要です。トラステッド起動を使用せずに最初に作成された既存のVMでは、トラステッド起動を有効にすることはできません。

Citrix DaaSオファリングのインベントリアイテムを表示し、VMサイズがトラステッド起動をサポートしているかどうかを判断するには、次のコマンドを実行します:

  1. PowerShellウィンドウを開きます。
  2. asnp citrix*を実行し、Citrix固有のPowerShellモジュールをロードします。
  3. 次のコマンドを実行します:

    $s = (ls XDHyp:\HostingUnits<name of hosting unit>\serviceoffering.folder\“<VM size>.serviceoffering)
    <!--NeedCopy-->
    
  4. $s | select -ExpandProperty Additionaldataを実行します
  5. SupportsTrustedLaunch属性の値を確認してください。

    • SupportsTrustedLaunchTrueの場合、VMサイズはトラステッド起動をサポートします。
    • SupportsTrustedLaunchFalseの場合、VMサイズはトラステッド起動をサポートしません。

AzureのPowerShellに従って、次のコマンドを使用してトラステッド起動をサポートするVMサイズを決定できます:

(Get-AzComputeResourceSku | where {$_.Locations.Contains($region) -and ($_.Name -eq “<VM size>”) })[0].Capabilities
<!--NeedCopy-->

Azure PowerShellコマンドを実行した後、VMサイズがトラステッド起動をサポートするかどうかを説明する例を次に示します。

  • 例1:Azure VMが第1世代のみをサポートしている場合、そのVMはトラステッド起動をサポートしていません。したがって、Azure PowerShellコマンドを実行した後、TrustedLaunchDisabled機能は表示されません。
  • 例2:Azure VMが第2世代のみをサポートし、TrustedLaunchDisabled機能がTrueの場合、第2世代のVMサイズはトラステッド起動ではサポートされません。
  • 例3:Azure VMが第2世代のみをサポートし、PowerShellコマンドの実行後にTrustedLaunchDisabled機能が表示されない場合、第2世代のVMサイズはトラステッド起動でサポートされます。

Azure仮想マシンのトラステッド起動ついて詳しくは、Microsoftのドキュメント「Azure Virtual Machinesのトラステッド起動」を参照してください。

トラステッド起動でマシンカタログを作成する際のエラー

トラステッド起動を使用してマシンカタログを作成しているときに、次のシナリオに応じたエラーが発生します:

シナリオ エラー
非管理対象カタログの作成中にマシンプロファイルを選択した場合 MachineProfileNotSupportedForUnmanagedCatalog
非管理対象ディスクをマスターイメージとしてカタログを作成するときに、トラステッド起動をサポートするマシンプロファイルを選択した場合 SecurityTypeNotSupportedForUnmanagedDisk
セキュリティの種類でトラステッド起動を使用し、マスターイメージソースを使用して管理カタログを作成するときに、マシンプロファイルを選択しない場合 MachineProfileNotFoundForTrustedLaunchMasterImage
マスターイメージとは異なるセキュリティの種類のマシンプロファイルを選択した場合 SecurityTypeConflictBetweenMasterImageAndMachineProfile
トラステッド起動をサポートしないVMサイズを選択しながら、カタログの作成時にトラステッド起動をサポートするマスターイメージを使用する場合 MachineSizeNotSupportTrustedLaunch

Azure Marketplace

Citrix Virtual Apps and DesktopsおよびCitrix DaaSは、マシンカタログを作成するためのプラン情報を含むAzure上のマスターイメージの使用をサポートしています。詳しくは、Microsoft Azure Marketplaceを参照してください。

ヒント:

標準のWindows Serverイメージなど、Azure Marketplaceにある一部のイメージには、プラン情報が追加されていません。Citrix DaaS機能は有料イメージ用です。

Shared Image Galleryで作成されたイメージにAzureプラン情報が含まれていることの確認

このセクションの手順を使用して、Citrix StudioでShared Image Galleryのイメージを表示します。これらのイメージは、マスターイメージに使用することもできます。イメージをShared Image Galleryに配置するには、ギャラリーでイメージ定義を作成します。

Azure Marketplace、Shared Image Gallery

[公開オプション] ページで、購入プラン情報を確認します。

購入プラン情報フィールドは最初は空欄です。これらのフィールドに、イメージに使用されている購入プラン情報を入力します。購入プラン情報を入力しないと、マシンカタログプロセスが失敗する可能性があります。

Azure MarketplaceでのVDA公開オプションの確認

購入プラン情報を確認した後、定義内にイメージバージョンを作成します。これはマスターイメージとして使用されます。[バージョンの追加] をクリックします :

Azure Marketplace、VDAバージョンの追加

[バージョンの詳細] セクションで、ソースとしてイメージスナップショットか管理対象ディスクを選択します:

Azure Marketplace、VDAオプションの選択

Azureの権限について

このセクションでは、Azureの一般的な必要最低限の権限について説明します。

最低限の権限

最低限の権限により、セキュリティ制御が向上します。ただし、最低限の権限しか使用していないため、追加の権限を必要とする新機能は失敗します。

ホスト接続の作成

Azureから取得した情報を使用して、新しいホスト接続を追加します。

"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
<!--NeedCopy-->

VMの電源管理

マシンインスタンスの電源をオンまたはオフにします。

"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
<!--NeedCopy-->

VMの作成、更新、または削除

マシンカタログを作成してから、マシンを追加、削除、更新し、マシンカタログを削除します。

以下は、マスターイメージが管理対象ディスクである場合、またはスナップショットがホスト接続と同じリージョンにある場合に必要となる最低限の権限の一覧です。

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
<!--NeedCopy-->

以下の機能の最低限の権限に基づき、以下の追加の権限が必要です:

  • マスターイメージが、ホスト接続と同じリージョンにあるストレージアカウント内のVHDである場合:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • マスターイメージが、Shared Image GalleryのImageVersionである場合:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • マスターイメージが、管理対象ディスクである場合。スナップショット、またはVHDは、ホスティング接続のリージョンとは異なるリージョンにあります:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     <!--NeedCopy-->
    
  • Citrix管理対象リソースグループを使用する場合:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • マスターイメージをShared Image Galleryに配置する場合:

     "Microsoft.Compute/galleries/write",
     "Microsoft.Compute/galleries/images/write",
     "Microsoft.Compute/galleries/images/versions/write",
     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     "Microsoft.Compute/galleries/delete",
     "Microsoft.Compute/galleries/images/delete",
     "Microsoft.Compute/galleries/images/versions/delete",
     <!--NeedCopy-->
    
  • Azure専用ホストサポートを使用する場合:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • 顧客管理キー(CMK)でサーバー側暗号化(SSE)を使用する場合:

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • ARMテンプレート(マシンプロファイル)を使用してVMを展開する場合:

     "Microsoft.Resources/deployments/write",
     "Microsoft.Resources/deployments/operationstatuses/read",
     "Microsoft.Resources/deployments/read",
     "Microsoft.Resources/deployments/delete",
     <!--NeedCopy-->
    
  • Azureテンプレートスペックをマシンプロファイルとして使用する場合:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
     <!--NeedCopy-->
    

非管理対象ディスクを使用するマシンの作成、更新、および削除

以下は、マスターイメージがVHDであり、管理者から提供されたリソースグループを使用する場合に必要となる最低限の権限の一覧です:

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action"
<!--NeedCopy-->

一般的な権限

Contributor(投稿者)の役割には、すべてのリソースを管理するための完全なアクセス権があります。この一連の権限は、新しい機能の取得を妨げるものではありません。

以下の一連の権限は、現在の機能セットで必要とされるよりも多くの権限が含まれていますが、今後の互換性の面でベストなものを提供します:

"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
<!--NeedCopy-->

追加情報