Citrix Virtual Apps and Desktops

Azure で準備済みイメージのマシンカタログを作成

  • 準備済みイメージを作成し、それらの準備済みイメージを使用して、次の方法で MCS マシンカタログを作成します。

  • Web Studio
  • PowerShell コマンド

準備済みイメージを使用して MCS マシンカタログを作成する主な手順は次のとおりです。

  1. イメージ定義と初期イメージバージョンを作成します。
  2. イメージバージョンを準備済みイメージとして使用してカタログを作成します。

Web Studio の使用

イメージ定義と初期イメージバージョンの作成

イメージ定義と初期イメージバージョンを作成するには、次の手順を実行します。

  1. Web Studio から、[イメージ] ノードに移動し、[イメージ定義の作成] をクリックします。[はじめに] ページで [次へ] をクリックします。
  2. [イメージ定義] ページで、イメージ定義の [OS タイプ][セッションタイプ] を指定します。
  3. 既存のリソースグループを選択するか、イメージリソースを保持するための新しいリソースグループを作成します。イメージ共有を有効にするには、Azure Compute Gallery で [イメージバージョンを配置] を選択し、新しいギャラリーを作成するか、既存のギャラリーを使用してイメージバージョンを保持するかを選択します。
  4. [イメージ] ページで、[リソース] (設定された接続に適用可能なリソースのみが一覧表示されます) と、イメージバージョンを作成するためのテンプレートとして使用するマスターイメージを選択します。[マシンプロファイルを使用] チェックボックスをオンにして、マシンプロファイルを選択できます。

    注記:

    • イメージを選択する前に、マスターイメージに VDA 2311 以降がインストールされており、MCSIO ドライバーが VDA にインストールされていることを確認してください
      • 機密 VM タイプ準備済みイメージを使用して MCS カタログを作成する場合は、機密 VM タイプマスターイメージと機密 VM タイプマシンプロファイルを使用して準備済みイメージを作成します。機密 VM タイプマスターイメージとマシンプロファイルの準備については、「Azure 機密 VM」を参照してください
  5. [ストレージとライセンスの種類] ページで、イメージ準備プロセスの一部として使用するストレージとライセンスの種類を選択します。

    注記:

    [イメージ] ページでマシンプロファイルを選択した場合、マシンプロファイルのライセンスタイプはプロファイル設定に基づいて事前に選択されます

  6. [マシン仕様] ページで、マシンサイズを選択します。[イメージ] ページでマシンプロファイルを選択した場合、マシンプロファイルのマシンサイズがデフォルトで選択されます。
  7. [NIC] ページで、準備イメージの NIC を選択または追加します。各 NIC について、関連付けられた仮想ネットワークを選択します。
  8. [ディスク設定] ページで、顧客管理の暗号化キー (CMEK) を選択します。マシンプロファイルに CMEK がないが、マスターイメージに CMEK がある場合、マスターイメージから CMEK が事前に選択されます。
  9. [バージョン説明] ページで、作成された初期イメージバージョンの説明を入力します。
  10. [概要] ページで、作成されたイメージ定義と初期イメージバージョンの詳細を確認します。イメージ定義の名前と説明を入力します。[完了] をクリックします。

イメージバージョンの作成

イメージバージョンを使用すると、特定のイメージに対するさまざまなイテレーションや更新を管理できます。この機能により、さまざまな目的のためにイメージの複数のバージョンを維持できます。

初期イメージバージョンからイメージバージョンを作成するには、次の手順を実行します。

注記:

すべてのイメージバージョンのホスティングユニットは同じである必要があります

  1. [イメージ] ノードに移動し、イメージバージョンまたはイメージ定義を選択して、[イメージバージョンの作成] をクリックします。
  2. [イメージ定義] ページで、ホスティングユニットを変更し、そのイメージバージョンのマスターイメージとマシンプロファイルを再選択できます。
  3. イメージバージョンの構成を最初に構成されたイメージバージョンと異なるものにする場合は、[イメージバージョンの作成] ダイアログの [ストレージとライセンスの種類][マシン仕様][NIC]、および [ディスク設定] ページで設定を構成します。
  4. イメージバージョンの説明を追加します。[完了] をクリックします。

create-image-versions

注記:

何らかの理由でイメージバージョンの作成に失敗した場合、下部にある [トラブルシューティング] タブに [再試行] オプションが表示されます

共有準備済みイメージ

Azure の異なるホスティングユニット間で準備されたイメージを共有するには、次の手順に従います。

  1. イメージバージョンを右クリックし、[イメージ共有の管理] を選択します。Azure 環境内のすべてのホスティングユニットが表示されます。イメージバージョンが作成されたリソースは、すべてのアクションに対して無効になっています。
  2. イメージを共有するホスティングユニットを選択し、[保存] をクリックします。[共有ステータス] 列に「進行中」と表示されます。
  3. 共有ステータスの詳細については、[リソース] タブをクリックします。

注:

イメージバージョンの共有ステータスが進行中の場合、[イメージバージョンの削除] または [イメージ共有の管理] オプションは無効になります。

イメージノードからのマシンカタログ作成

[イメージ] ノードの [カタログの作成] オプションを使用して、イメージバージョンからカタログを作成します。

または、[マシンカタログ] ノードでカタログを作成する際にバージョンを選択し、カタログ作成ワークフローで準備されたイメージオプションにリンクすることもできます。マシンカタログノードからのマシンカタログ作成を参照してください。

[イメージ] ノードから MCS マシンカタログを作成するには、次の手順を実行します。

  1. イメージバージョンを選択し、[カタログの作成] をクリックします。[はじめに] ページで [次へ] をクリックします。
  2. [デスクトップエクスペリエンス] ページで、必要なデスクトップエクスペリエンスを選択します。
  3. [イメージ] ページから [ディスク設定] ページまで、設定は選択したイメージバージョンに基づいて事前に選択されています。
  4. [リソースグループ] ページで、新しいリソースグループを作成するか、既存のリソースグループを使用してこのカタログのリソースを配置するかを選択できます。
  5. 次のページで設定を完了します。
  6. [概要] ページで、マシンカタログの詳細を確認します。マシンカタログの名前と説明を入力します。[完了] をクリックします。
  7. [マシンカタログ] ノードに移動して、作成されたマシンカタログを確認します。

マシンカタログノードからのマシンカタログ作成

[マシンカタログ] ノードから MCS マシンカタログを作成するには、次の手順を実行します。

  1. 左側のナビゲーションペインで [マシンカタログ] をクリックします。
      1. [マシンカタログの作成] をクリックします。[マシンカタログのセットアップ] ページが表示されます。[はじめに][マシンの種類][マシン管理] の各ページで [次へ] をクリックします。
      1. [マシン管理] ページで、次の設定を選択します。
      1. [電源管理されているマシン(例: 仮想マシンまたはブレードPC)] を選択します。
        1. [Citrixプロビジョニングテクノロジー] を選択します。次に、[Citrix Machine Creation Services™] を選択します。
      1. [リソース] フィールドには、異なるゾーンに属するリソースが一覧表示されます。任意の Azure ネットワークリソースを選択し、[次へ] をクリックします。
  2. [イメージ] ページ: マスターイメージタイプの場合、次の手順に従います。
    1. マスターイメージを選択します。
    2. マスターイメージの下でイメージを選択します。ブレードには、リソースと同じリージョンに属するすべてのイメージが一覧表示されます。
    3. [完了] をクリックします。
    4. 準備されたイメージタイプの場合、[準備されたイメージ] を選択します。
    5. [準備されたイメージ] の下で、イメージ定義のイメージバージョンを選択します。必要に応じて、選択した準備されたイメージバージョンにメモを追加します。
    6. イメージバージョン名をクリックします。選択したイメージバージョンの詳細を表示するには、下線が引かれているバージョン番号をクリックします。
        1. 選択したイメージバージョンがマシンプロファイルで構成されている場合は、マシンプロファイルを選択します。選択したイメージバージョンがマシンプロファイルで構成されていない場合、マシンプロファイルを使用することはできません。
  3. 次のページで設定を構成します。
  4. [ディスク設定] ページで、選択した準備されたイメージがディスク暗号化セットを使用している場合、暗号化セットを削除することはできませんが、キーを別の暗号化キーに変更することはできます。
  5. [リソースグループ] ページで、新しいリソースグループを作成するか、既存のリソースグループを使用してこのカタログのリソースを配置するかを選択できます。
  6. 次のページで設定を完了します。
  7. [概要] ページで、マシンカタログの詳細を確認します。マシンカタログの名前と説明を入力します。[完了] をクリックします。

PowerShell の使用

準備されたイメージの作成

準備されたイメージバージョン仕様を作成するための詳細な PowerShell コマンドは次のとおりです。

  1. Test-ProvImageDefinitionNameAvailable コマンドを使用して、利用可能なイメージ定義名を確認します。例:

    Test-ProvImageDefinitionNameAvailable -ImageDefinitionName <string[]>
    <!--NeedCopy-->
    
      1. New-ProvImageDefinition コマンドを使用してイメージ定義を作成します。例:
    New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession
    <!--NeedCopy-->
    
  2. Add-ProvImageDefinitionConnection コマンドを使用して、指定されたホスティング接続でイメージ定義の新しい構成を作成します。

    Add-ProvImageDefinitionConnectionCustomProperties には、次のものが含まれます。パラメーターを使用しない場合、デフォルト値が使用されます。

    • ResourceGroups: ベースディスクを持つリソースグループ。
    • UseSharedImageGallery: ベースディスクのタイプを示すインジケーター。ACG(イメージ共有)の場合は true、スナップショットの場合は false を使用します。
    • ImageGallery: ベースディスクが ACG イメージバージョンである場合のギャラリー名。

    例えば、

  • スナップショットと顧客が提供するリソースグループの場合:

     ```
     $CustomerOwnRsourceGroupProperties = @"
     <CustomProperties xmlns="http:// schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="ResourceGroups" Value="yangj_image" />
     </CustomProperties>
     "@
     <!--NeedCopy--> ```
    
  • ACG、顧客が提供するリソースグループ、およびイメージギャラリーの場合:

     ```
     $CustomerOwnAllProperties = @"
     <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
     <Property xsi:type="StringProperty" Name="ResourceGroups" Value="rg" />
     <Property xsi:type="StringProperty" Name="ImageGallery" Value="gallery" />
     </CustomProperties>
     "@
     <!--NeedCopy--> ````
    
    • In case of ACG and customer provided resource group only:

      $CustomerOwnResourceGroupProperties = @"
      <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
      <Property xsi:type="StringProperty" Name="ResourceGroups" Value="rg" />
      </CustomProperties>
      "@
      <!--NeedCopy-->
      
    • In case of ACG and resource group and image gallery managed by Citrix:

       $CustomerOwnResourceGroupNothingProperties = @"
       <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
       </CustomProperties>
       "@
       <!--NeedCopy-->
      
     Add-ProvImageDefinitionConnection -ImageDefinitionName image1 -HypervisorConnectionName Azure28 [-CustomProperties $CustomProperties]
     <!--NeedCopy-->
    
  1. Create an image version using the New-ProvImageVersion command. For example,

    New-ProvImageVersion -ImageDefinitionName image1 -Description "version 1"
    <!--NeedCopy-->
    
  2. Add a master image version spec to the image version using the Add-ProvImageVersionSpec command. For example,

    Add-ProvImageVersionSpec -ImageDefinitionName  image1  -ImageVersionNumber  1 -HostingUnitName azure -MasterImagePath "XDHyp:\HostingUnits\azure\image.folder\azureresourcegroup.resourcegroup\win2022-snapshot.snapshot"
    <!--NeedCopy-->
    

    Note:

    You can add only one master image version spec to one image version for a hosting unit.

  3. Create a prepared image version spec from the master image version spec using the New-ProvImageVersionSpec command. For example,

    New-ProvImageVersionSpec
    -SourceImageVersionSpecUid  c6e7384c-b2f8-46d6-9519-29a2c57ed3cb
    -NetworkMapping @{"0"="XDHyp:\HostingUnits\azure\virtualprivatecloud.folder\azureresourcegroup.resourcegroup\azure-vnet-eastus.virtualprivatecloud\dev.network"}
    -ServiceOffering"XDHyp:\HostingUnits\azure\serviceoffering.folder\Standard_B2ms.serviceoffering" -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"></CustomProperties>" -RunAsynchronously
    <!--NeedCopy-->
    
  4. You can also share a prepared image version spec with another hosting unit in all hosting connections by using the Add-ProvImageVersionSpecHostingUnit command. For example,

    Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid xxxxxxx -HostingUnitName AzureWest
    <!--NeedCopy-->
    

    Note:

    One hosting unit and preparation type can have only one prepared instance.

Example of the complete set of Powershell commands to create image definition, image version, and prepared image version spec:

New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession
 
$CustomProperties = @"
<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
    <Property xsi:type="StringProperty" Name="ResourceGroups" Value="rg" />
    <Property xsi:type="StringProperty" Name="ImageGallery" Value="gallery" />
</CustomProperties>
"@  
 
Add-ProvImageDefinitionConnection -ImageDefinitionName image1 -HypervisorConnectionName Azure28 -CustomProperties $CustomProperties
 
$imageVersion = New-ProvImageVersion -ImageDefinitionName image1 -Description "version 1"
 
$SourceImageVersionSpec = Add-ProvImageVersionSpec -ImageVersionUid $imageVersion.ImageVersionUid `
    -HostingUnitUid $hostingunit.HostingUnitUid `
    -MasterImagePath "XDHyp:\HostingUnits\azure28\image.folder\abc.resourcegroup\def-snapshot.snapshot"
 
New-ProvImageVersionSpec -NetworkMapping @{"0" = "XDHyp:\HostingUnits\azure28\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\studio-mcs-infrastructure.resourcegroup\studio-mcs-vnet-eastus.virtualprivatecloud\mcs-dev.network" } -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Server`" /></CustomProperties>" -ServiceOffering "XDHyp:\HostingUnits\azure28\serviceoffering.folder\Standard_B2s.serviceoffering" -SourceImageVersionSpecUid $SourceImageVersionSpec.ImageVersionSpecUid
Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid xxxxxxx -HostingUnitName AzureWest
$PreparedImageVersionSpec = Get-ProvImageVersionSpec -ImageVersionUid $imageVersion.ImageVersionUid | Where SourceImageVersionSpecUid-eq $SourceImageVersionSpec.ImageVersionSpecUid
<!--NeedCopy-->

Note:

  • All image version specs in an image definition must belong to the same hosting unit.

    • An image version can have only one master image version spec and one prepared image version spec.
  • All image version specs must either have a machine profile or none of the image version specs must have a machine profile.

Create a catalog using a prepared image version spec

Create an MCS machine catalog from the prepared image version spec using the New-ProvScheme command. For example,

New-ProvScheme -ProvisioningSchemeName <string> -ImageVersionSpecUid <Guid> -HostingUnitUid <Guid> -IdentityPoolUid <Guid> [-VMCpuCount <int>] [-VMMemoryMB <int>] [-UseWriteBackCache] [-NetworkMapping <Hashtable>] [-CleanOnBoot] [-Scope <string[]>] [-Metadata <Hashtable>] [-ServiceOffering <string>] [-SecurityGroup <string[]>] [-TenancyType <string>] [-MachineProfile <string>] [-CustomProperties <string>] [-ResetAdministratorPasswords] [-UseFullDiskCloneProvisioning] [-RunAsynchronously] [-PurgeJobOnSuccess] [-ProvisioningSchemeType <ProvisioningSchemeType>][-ImageAssignmentNote <string>]
<!--NeedCopy-->

Or,

New-ProvScheme -ProvisioningSchemeName <string> -ImageVersionSpecUid <Guid> -HostingUnitName <string> -IdentityPoolName <string> [-VMCpuCount <int>] [-VMMemoryMB <int>] [-UseWriteBackCache] [-NetworkMapping <Hashtable>] [-CleanOnBoot] [-Scope <string[]>] [-Metadata <Hashtable>] [-ServiceOffering <string>] [-SecurityGroup <string[]>] [-TenancyType <string>] [-MachineProfile <string>] [-CustomProperties <string>] [-ResetAdministratorPasswords] [-UseFullDiskCloneProvisioning] [-RunAsynchronously] [-PurgeJobOnSuccess] [-ProvisioningSchemeType <ProvisioningSchemeType>][-ImageAssignmentNote <string>]
<!--NeedCopy-->

If you want to use an ACG image version spec, then set UseSharedImageGallery as true. For example,

$provSchemeCustomProperties= @"
<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
    <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
    <Property xsi:type="StringProperty" Name="StorageAccountType" Value="StandardSSD_LRS" />
</CustomProperties>
"@
New-ProvScheme -ProvisioningSchemeName assignimage -ImageVersionSpecUid $PreparedImageVersionSpec.ImageVersionSpecUid `
    -HostingUnitUid $hostingunit.HostingUnitUid `
    -IdentityPoolUid $IdentityPool.IdentityPoolUid `
    -CleanOnBoot -Scope @() -SecurityGroup @() `
    -ServiceOffering "XDHyp:\HostingUnits\azure28\serviceoffering.folder\Standard_B2s.serviceoffering" `
    -NetworkMapping @{"0"="XDHyp:\HostingUnits\azure28\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\studio-mcs-infrastructure.resourcegroup\studio-mcs-vnet-eastus.virtualprivatecloud\mcs-dev.network"} `
    -CustomProperties $provSchemeCustomProperties
<!--NeedCopy-->

Example of the complete set of Powershell commands to create a catalog:

$Catalog = New-BrokerCatalog  -AllocationType "Random"  -IsRemotePC $False  -MinimumFunctionalLevel "L7_20" -Name "azurecatalog" -PersistUserChanges "Discard" -ProvisioningType "MCS" -Scope @() -SessionSupport "MultiSession"

$IdentityPool = New-AcctIdentityPool  -AllowUnicode  -Domain "azure.local" -IdentityPoolName "azurecatalog" -IdentityType "ActiveDirectory"  -NamingScheme "azure##" -NamingSchemeType "Numeric" -Scope @()

$PreparedImageVersionSpec = Get-ProvImageVersionSpec -ImageDefinitionName image1 -ImageVersionNumber 1 -Filter "PreparationType -eq 'Mcs'"

$Task = New-ProvScheme -ProvisioningSchemeName azurecatalog -ImageVersionSpecUid $PreparedImageVersionSpec.ImageVersionSpecUid -HostingUnitName azure -IdentityPoolName azurecatalog -CleanOnBoot -Scope @() -SecurityGroup @() -ServiceOffering "XDHyp:\HostingUnits\azure\serviceoffering.folder\Standard_B2s.serviceoffering" -NetworkMapping @{"0"="XDHyp:\HostingUnits\azure\virtualprivatecloud.folder\azureresourcegroup.resourcegroup\azure-vnet-eastus.virtualprivatecloud\dev.network"} -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">    <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" /><Property xsi:type=`"StringProperty`" Name=`"StorageAccountType`" Value=`"StandardSSD_LRS`" /></CustomProperties>" -RunAsynchronously

Get-ProvTask -TaskId $Task.TaskId
$ProvScheme = Get-ProvScheme -ProvisioningSchemeName azurecatalog

Set-BrokerCatalog -Name $Catalog.Name -ProvisioningSchemeId $ProvScheme.ProvisioningSchemeUid

<!--NeedCopy-->

Share encrypted prepared image across regions, subscriptions, and tenants

Azure Compute Gallery (ACG) images can be encrypted with a Disk Encryption Set (DES). With ACG sharing feature, you can share an encrypted prepared image across regions, subscriptions and tenants for Azure. The target resource needs to pick a DES in its region from the subscription where the prepared image belongs. You can thereafter create a machine catalog in the resource where the encrypted prepared image is shared.

The key steps to share an encrypted prepared image are:

  1. Create Disk Encryption Set (DES) in each region: See the microsoft documentation Use the Azure portal to enable server-side encryption with customer-managed keys for managed disks.
  2. Create an image definition for the Azure host connection and image versions in Azure Compute Gallery (ACG) and specify the DES to encrypt the prepared image : See Create an image definition and initial image version.
  3. Share the encrypted prepared image across regions, subscriptions, and tenants: You can use Web Studio or PowerShell commands.

You can now create a machine catalog in the resource where the encrypted prepared image is shared. For more information on creating the catalog, see Create a prepared image machine catalog in Azure.

Note:

  • If the primary region is not encrypted, the shared regions also cannot have DES.
  • If two host units target the same region, they have the same DES.

Share the encrypted image across regions, subscriptions, and tenants using Web Studio

  1. Right-click an image version and select Manage Image Share. The resources with region and disk encryption set are listed.
  2. Select the resources that you want to share with the image version. The resources where the image version is created from is disabled for any actions. Select a DES from the drop-down menu if DES is not configured for a resource.

    Note:

    Resources within the same region must use the same encryption key.

  3. Click Save.
  4. Click the Resources tab for more details about the sharing status.

    Note:

    • When the status of the image version sharing is in progress, the option to Delete Image Version or Manage Image Share is disabled.
    • When a resource is successfully shared, the DES is not editable.

Share the encrypted image across regions, subscriptions, and tenants using PowerShell

Use the command Add-ProvImageVersionSpecHostingUnit and add the parameter CustomProperties. In CustomProperties, configure the DES for the target resource. When sharing the prepared encrypted image, each resource picks a DES in its region from the subscription which the prepared image belongs to. For example,

$CustomProperties = "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">"
 "<Property xsi:type=`"StringProperty`" Name=`"DiskEncryptionSetId`" Value=`"/subscriptions/xxxxxx-7152-46c4-b061-xxxxxx70c/resourceGroups/resourcegroup1/providers/Microsoft.Compute/diskEncryptionSets/desid1`" />"+
 "</CustomProperties>"
Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid <Guid> -HostingUnitUid <Guid> -CustomProperties $CustomProperties

## 詳細情報

-  [イメージ管理](/ja-jp/citrix-virtual-apps-desktops/install-configure/image-management.html)

## 次のステップ

-  [準備済みイメージマシンカタログの管理](/ja-jp/citrix-virtual-apps-desktops/install-configure/manage-prepared-image-machine-catalogs.html)
<!--NeedCopy-->