Citrix Virtual Apps and Desktops

Ambientes de nuvem do Microsoft Azure Resource Manager

Siga as orientações deste artigo ao usar o Microsoft Azure Resource Manager para provisionar máquinas virtuais em sua implantação do Citrix Virtual Apps and Desktops.

Presumimos que você esteja familiarizado com o seguinte:

Provisionamento sob demanda do Azure

Com o provisionamento sob demanda do Azure, as VMs são criadas somente quando o Citrix Virtual Apps and Desktops inicia uma ação de inicialização, após a conclusão do provisionamento.

Quando você usa o MCS para criar catálogos de máquina no Azure Resource Manager, o recurso de provisionamento sob demanda do Azure:

  • Reduz os custos de armazenamento
  • Oferece criação de catálogos mais rápida

Quando você cria um catálogo MCS, o portal do Azure exibe o grupo de segurança de rede, as interfaces de rede, as imagens base e os discos de identidade nos grupos de recursos.

O portal do Azure não mostra uma VM até que o Citrix Virtual Apps and Desktops inicie uma ação de inicialização para ela. Existem dois tipos de máquinas com as seguintes diferenças:

  • No caso de uma máquina em pool, o disco do sistema operacional e o cache de write-back existem somente quando a VM existe. Quando você desliga uma máquina em pool no console, a VM não fica visível no portal do Azure. Há uma economia significativa nos custos de armazenamento se você desligar as máquinas rotineiramente (por exemplo, fora do horário de trabalho).
  • Para uma máquina dedicada, o disco do sistema operacional é criado na primeira vez que a VM é ligada. A VM no portal do Azure permanece armazenada até que a identidade da máquina seja excluída. Quando você encerra uma máquina dedicada no console, a VM ainda fica visível no portal do Azure.

Conexão com o Azure Resource Manager

Conexões e recursos descreve os assistentes que criam uma conexão. As informações a seguir abrangem detalhes específicos das conexões do Azure Resource Manager.

Considerações:

  • A Citrix recomenda usar o Service Principal com a função de colaborador. No entanto, consulte a seção Minimum permissions para obter a lista de permissões mínimas.
  • Ao criar a primeira conexão, o Azure solicita que você conceda as permissões necessárias. Em conexões futuras, ainda será necessário que você se autentique, mas o Azure se lembra do seu consentimento anterior e não exibe o prompt novamente.
  • As contas usadas para autenticação devem ser coadministradores da assinatura.
  • A conta usada para autenticação deve ser um membro do diretório da assinatura. É preciso distinguir dois tipos de conta: ‘Trabalho ou escola’ e ‘conta pessoal da Microsoft’. Veja CTX219211 para obter mais detalhes
  • Embora você possa usar uma conta Microsoft existente adicionando-a como membro do diretório da assinatura, pode haver complicações se o usuário tiver recebido anteriormente acesso de convidado a um dos recursos do diretório. Nesse caso, eles podem ter uma entrada de espaço reservado no diretório que não lhes concede as permissões necessárias e é retornado um erro.

    Retifique isso removendo os recursos do diretório e adicione-os de volta explicitamente. No entanto, exerça essa opção com cuidado, pois ela tem efeitos não intencionais em outros recursos que a conta pode acessar.

  • Há um problema conhecido em que determinadas contas são detectadas como convidados do diretório quando na verdade são membros. Configurações como essa geralmente ocorrem com contas de diretório estabelecidas mais antigas. Solução alternativa: adicione uma conta ao diretório, que recebe o valor de associação adequado.
  • Os grupos de recursos são simplesmente contêineres de recursos e podem conter recursos de regiões diferentes da sua própria região. Isso pode ser confuso se você espera que os recursos exibidos na região de um grupo de recursos estejam disponíveis.
  • Sua rede e sub-rede devem ser grandes o suficiente para hospedar o número de máquinas necessárias. Isso requer alguma previsão, mas a Microsoft ajuda você a especificar os valores corretos, com orientações sobre a capacidade do espaço de endereço.

Você pode estabelecer uma conexão de host com o Azure de duas maneiras:

  • Autenticar no Azure para criar uma entidade de serviço.
  • Use os detalhes de uma entidade de serviço criada anteriormente para se conectar ao Azure.

Crie uma entidade de serviço

Importante:

Esse recurso ainda não está disponível para assinaturas do Azure China e do Azure Germany.

Antes de começar, autentique-se no Azure. Pré-requisitos:

  • Você tem uma conta de usuário no locatário do Azure Active Directory da sua assinatura.
  • A conta de usuário do Azure AD também é coadministradora da assinatura do Azure que você deseja usar para provisionar recursos.
  • Você tem permissões de administrador global, administrador de aplicativo ou desenvolvedor de aplicativos para autenticação. Essas permissões podem ser revogadas após a criação da conexão com o host. Para obter mais informações sobre funções, consulte Funções internas do Azure AD.

Quando você se autentica no Azure para criar uma entidade de serviço, um aplicativo é registrado no Azure. Uma chave secreta (segredo do cliente) é criada para o aplicativo registrado. O aplicativo registrado usa o segredo do cliente para autenticar no Azure AD. Lembre-se de alterar o segredo do cliente antes que ele expire. Você recebe um alerta no console antes que a chave secreta expire.

Para autenticar no Azure para criar uma entidade de serviço, conclua as seguintes etapas no assistente Add Connection and Resources :

  1. Na página Connection, selecione Create a new connection, o tipo de conexão Microsoft Azure e seu ambiente do Azure.

  2. Selecione quais ferramentas usar para criar as máquinas virtuais e, em seguida, selecione Next.

  3. Na página Connection Details, insira seu ID de assinatura do Azure e um nome para a conexão. Depois de inserir o ID da assinatura, o botão Create new será ativado.

    Nota:

    O nome da conexão pode conter de 1 a 64 caracteres e não pode conter apenas espaços em branco nem os caracteres \/;:#.*?=<>|[]{}"'()'.

  4. Selecione Create new e insira o nome de usuário e a senha da conta do Azure Active Directory.

  5. Selecione Sign in.

  6. Selecione Accept para conceder ao Citrix Virtual Apps and Desktops as permissões listadas. O Citrix Virtual Apps and Desktops cria uma entidade de serviço que permite gerenciar recursos do Azure em nome do usuário especificado.

  7. Depois de selecionar Accept, você retorna à página Connection no assistente.

    Nota:

    Depois de autenticar com êxito no Azure, os botões Create new e Use existing desaparecem. O texto Connection successful aparece, com uma marca de seleção verde, indicando a conexão bem-sucedida com sua assinatura do Azure.

  8. Na página Connection Details, selecione Next.

    Nota:

    Você não pode prosseguir para a próxima página até que você se autentique com êxito no Azure e faça a concessão das permissões necessárias.

  9. Configure recursos para a conexão. Os recursos compreendem a região e a rede.

    • Na página Region, selecione uma região.
    • Na página Network, faça o seguinte:
      • Digite um nome de recurso de 1 a 64 caracteres para ajudar a identificar a combinação de região e rede. Um nome de recurso não pode conter apenas espaços em branco nem os caracteres \/;:#.*?=<>|[]{}"'()'.
      • Selecione um par de rede virtual/grupo de recursos. (Se você tiver mais de uma rede virtual com o mesmo nome, o emparelhamento do nome da rede com o grupo de recursos fornecerá combinações exclusivas.) Se a região selecionada na página anterior não tiver nenhuma rede virtual, retorne a essa página e selecione uma região que tenha redes virtuais.
  10. Na página Summary, exiba um resumo das configurações e selecione Finish para concluir a configuração.

Use os detalhes de uma entidade de serviço criada anteriormente para se conectar ao Azure

Para criar uma entidade de serviço manualmente, conecte-se à sua assinatura do Azure Resource Manager e use os cmdlets do PowerShell fornecidos nas seções a seguir.

Pré-requisitos:

  • SubscriptionId: SubscriptionID do Azure Resource Manager para a assinatura onde você deseja provisionar VDAs.
  • ActiveDirectoryID: ID do locatário do aplicativo que você registrou no Azure AD.
  • ApplicationName: Nome do aplicativo a ser criado no Azure AD.

Para criar uma entidade de serviço:

  1. Conecte-se à sua assinatura do Azure Resource Manager.

    Connect-AzAccount

  2. Selecione a assinatura do Azure Resource Manager na qual você deseja criar a entidade de serviço.

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. Crie o aplicativo em seu locatário do AD.

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. Crie uma entidade de serviço.

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. Atribua uma função à entidade de serviço.

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

  6. Na janela de saída do console do PowerShell, observe o ApplicationId. Você fornece esse ID ao criar a conexão do host.

No assistente Add Connection and Resources:

  1. Na página Connection, selecione Create a new connection, o tipo de conexão Microsoft Azure e seu ambiente do Azure.

  2. Selecione quais ferramentas usar para criar as máquinas virtuais e, em seguida, selecione Next.

  3. Na página Connection Details, insira seu ID de assinatura do Azure e um nome para a conexão.

    Nota:

    O nome da conexão pode conter de 1 a 64 caracteres e não pode conter apenas espaços em branco nem os caracteres \/;:#.*?=<>|[]{}"'()'.

  4. Selecione Use existing. Na janela Existing Service Principal Details, insira as seguintes configurações para a entidade de serviço existente. Depois de inserir os detalhes, o botão Save é ativado. Selecione Save. Você não pode progredir além desta página até fornecer detalhes válidos.

    • Subscription ID. Insira seu ID de assinatura do Azure. Para obter sua ID de assinatura, entre no portal do Azure e navegue até Subscriptions > Overview.
    • ID do Active Directory (ID do locatário). Insira a ID do Diretório (locatário) do aplicativo que você registrou no Azure AD.
    • Application ID. Insira a ID do aplicativo (cliente) do aplicativo que você registrou no Azure AD.
    • Application secret. Crie uma chave secreta (segredo do cliente). O aplicativo registrado usa a chave para autenticar no Azure AD. Recomendamos que você altere as chaves regularmente por motivos de segurança. Lembre-se de salvar a chave porque você não poderá recuperá-la mais tarde.
    • Secret expiration date. Insira a data após a qual o segredo do aplicativo expira. Você recebe um alerta no console antes que a chave secreta expire. No entanto, se a chave secreta expirar, você receberá erros.

      Nota:

      Por motivos de segurança, o período de expiração não pode ser superior a dois anos a partir de agora.

    • Authentication URL. Esse campo é preenchido automaticamente e não é editável.
    • Management URL. Esse campo é preenchido automaticamente e não é editável.
    • Storage suffix. Esse campo é preenchido automaticamente e não é editável.

      O acesso aos seguintes pontos de extremidade é necessário para criar um catálogo MCS no Azure. O acesso a esses pontos de extremidade otimiza a conectividade entre sua rede e o portal do Azure e seus serviços.

  5. Depois de selecionar Save, você retornará à página Connection Details. Selecione Next para prosseguir para a próxima página.

  6. Configure recursos para a conexão. Os recursos compreendem a região e a rede.

    • Na página Region, selecione uma região.
    • Na página Network, faça o seguinte:
      • Digite um nome de recurso de 1 a 64 caracteres para ajudar a identificar a combinação de região e rede. Um nome de recurso não pode conter apenas espaços em branco nem os caracteres \/;:#.*?=<>|[]{}"'()'.
      • Selecione um par de rede virtual/grupo de recursos. (Se você tiver mais de uma rede virtual com o mesmo nome, o emparelhamento do nome da rede com o grupo de recursos fornecerá combinações exclusivas.) Se a região selecionada na página anterior não tiver nenhuma rede virtual, retorne a essa página e selecione uma região que tenha redes virtuais.
  7. Na página Summary, exiba um resumo das configurações e selecione Finish para concluir a configuração.

Criar um catálogo de máquinas por meio de uma imagem do Azure Resource Manager

Uma imagem pode ser um disco, um instantâneo ou a versão imagem de uma definição de imagem na Galeria de Computação do Azure que é usada para criar as VMs em um catálogo de máquinas. Antes de criar o catálogo de máquinas, crie uma imagem no Azure Resource Manager. Para obter informações gerais sobre imagens, consulte Criar catálogos de máquinas.

O uso de um perfil de máquina com início confiável como Security Type é obrigatório quando você seleciona uma imagem ou instantâneo com início confiável habilitado. Em seguida, você pode ativar ou desativar o SecureBoot e o vTPM especificando seus valores no Perfil de Máquina. Para obter informações sobre o início confiável do Azure, consulte Início confiável para máquinas virtuais do Azure.

O catálogo de máquinas usa as seguintes propriedades que são definidas nas propriedades personalizadas:

  • Zona de disponibilidade
  • ID do grupo de hosts dedicados
  • ID do conjunto de criptografia de disco
  • Tipo de sistema operacional
  • Tipo de licença
  • Tipo de armazenamento

Se essas propriedades personalizadas não forem definidas explicitamente, os valores da propriedade serão definidos a partir da especificação do modelo ARM ou da VM, o que for usado como o perfil da máquina. Além disso, se ServiceOffering não for especificado, ele será definido a partir do perfil da máquina.

Nota:

Se algumas das propriedades estiverem ausentes no perfil da máquina e não estiverem definidas nas propriedades personalizadas, os valores padrão das propriedades serão usados sempre que aplicável.

A seção a seguir descreve alguns cenários em New-ProvScheme e Set-ProvScheme quando CustomProperties tem todas as propriedades definidas ou os valores são derivados de MachineProfile.

Cenário New-ProvScheme

  • MachineProfile tem todas as propriedades e CustomProperties não estão definidas. Exemplo:

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

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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 tem algumas propriedades e CustomProperties não estão definidas. Exemplo: MachineProfile tem somente LicenseType e OsType.

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

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    
  • Tanto MachineProfile quanto CustomProperties definem todas as propriedades. Exemplo:

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

    As propriedades personalizadas têm prioridade. Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    
  • Algumas propriedades são definidas em MachineProfile e algumas propriedades são definidas em CustomProperties. Exemplo:
    • CustomProperties definem LicenseType e StorageAccountType
    • MachineProfile define LicenseType, OsType e Zones

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

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    
  • Algumas propriedades são definidas em MachineProfile e algumas propriedades são definidas em CustomProperties. Além disso, ServiceOffering não está definida. Exemplo:

    • CustomProperties definem StorageType
    • MachineProfile define LicenseType
     New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mp.vm"
     -ServiceOffering "XDHyp:\HostingUnits\azureunit\serviceoffering.folder<explicit-machine-size>.serviceoffering"
     <!--NeedCopy-->
    

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    
  • Se OsType não estiver em CustomProperties nem em MachineProfile, então:
    • O valor é lido a partir da imagem mestre.
    • Se a imagem mestre for um disco não gerenciado, OsType será definido como Windows.

    Exemplo:

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

    O valor da imagem mestre é gravado nas propriedades personalizadas, nesse caso, 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-->
    

Cenários Set-ProvScheme

  • Um catálogo existente com:
    • CustomProperties para StorageAccountType e OsType
    • MachineProfile mpA.vm que define Zones

    Atualizações:

    • MachineProfile mpB.vm que define StorageAccountType
    • Um novo conjunto de propriedades personalizadas $CustomPropertiesB que define LicenseType e OsType

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

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    
  • Um catálogo existente com:
    • CustomProperties para StorageAccountType e OsType
    • MachineProfile mpA.vm que define StorageAccountType e LicenseType

    Atualizações:

    • Um novo conjunto de propriedades personalizadas $CustomPropertiesB que define StorageAccountType e OsType.

    Set-ProvScheme -CustomProperties $CustomPropertiesB

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    
  • Um catálogo existente com:
    • CustomProperties para StorageAccountType e OsType
    • MachineProfile mpA.vm que define Zones

    Atualizações:

    • Um MachineProfile mpB.vm que define StorageAccountType e LicenseType
    • ServiceOffering não está especificado

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

    Os valores a seguir são definidos como propriedades personalizadas para o catálogo:

     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-->
    

Limitação do Azure

O Azure Resource Manager controla as solicitações de assinaturas e locatários, roteando o tráfego com base em limites definidos, adaptados às necessidades específicas do provedor. Consulte Throttling Resource Manager requests no site da Microsoft para obter mais informações. Existem limites para assinaturas e locatários, onde o gerenciamento de muitas máquinas pode se tornar problemático. Por exemplo, uma assinatura com muitas máquinas pode ter problemas de desempenho relacionados a operações de energia.

Dica:

Para obter mais informações, consulte Improving Azure performance with Machine Creation Services.

Para ajudar a mitigar esses problemas, você pode remover a limitação interna do MCS para usar mais da cota de solicitação disponível do Azure.

Recomendamos as seguintes configurações ideais ao ativar ou desativar VMs em assinaturas grandes, por exemplo, aquelas que contêm 1.000 VMs:

  • Operações simultâneas absolutas: 500
  • Máximo de novas operações por minuto: 2000
  • Simultaneidade máxima de operações: 500

Por padrão, o MCS oferece suporte a 500 operações simultâneas no máximo. Como alternativa, você pode usar o SDK remoto do PowerShell para definir o número máximo de operações simultâneas.

Use a propriedade PowerShell, MaximumConcurrentProvisioningOperations, para especificar o número máximo de operações simultâneas de provisionamento do Azure. Ao usar essa propriedade, leve em consideração:

  • O valor padrão de MaximumConcurrentProvisioningOperations é 500.
  • Configure o parâmetro MaximumConcurrentProvisioningOperations por meio do comando do PowerShell Set-item.

Grupos de recursos do Azure

Os grupos de recursos de provisionamento do Azure fornecem uma maneira de provisionar as VMs que fornecem aplicativos e áreas de trabalho aos usuários. Você pode adicionar grupos de recursos do Azure vazios existentes ao criar um catálogo de máquinas do MCS ou criar novos grupos de recursos para você. Para obter informações sobre grupos de recursos do Azure, consulte a documentação da Microsoft.

Uso do grupo de recursos do Azure

Não há limite para o número de máquinas virtuais, discos gerenciados, instantâneos e imagens por Grupo de Recursos do Azure. (O limite de 240 VMs por 800 discos gerenciados por Grupo de Recursos do Azure foi removido.)

  • Ao usar uma entidade de serviço de escopo completo para criar um catálogo de máquinas, o MCS cria apenas um Grupo de Recursos do Azure e usa esse grupo para o catálogo.
  • Ao usar uma entidade de serviço de escopo restrito para criar um catálogo de máquinas, você deve fornecer um Grupo de Recursos do Azure vazio e pré-criado para o catálogo.

Discos efêmeros do Azure

Um disco efêmero do Azure permite que você redefina o objetivo do disco de cache para armazenar o disco de SO para uma máquina virtual habilitada para o Azure. Essa funcionalidade é útil para ambientes do Azure que exigem um disco SSD de maior desempenho em relação a um disco HDD padrão. Para usar discos efêmeros, você deve definir a propriedade personalizada UseEphemeralOsDisk como true ao executar New-ProvScheme.

Nota:

Se a propriedade personalizada UseEphemeralOsDisk estiver definida como false ou se não for especificado nenhum valor, todos os VDAs provisionados continuarão a usar um disco de SO provisionado.

Veja a seguir um exemplo de conjunto de propriedades personalizadas que devem ser usadas no esquema de provisionamento:

"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-->

Como criar máquinas usando discos de SO efêmeros

Os discos de SO efêmeros são controlados com base na propriedade UseEphemeralOsDisk do parâmetro CustomProperties.

Considerações importantes para discos efêmeros

Para provisionar discos de sistema operacional efêmeros usando New-ProvScheme, considere as seguintes restrições:

  • O tamanho da VM usado para o catálogo deve oferecer suporte a discos de SO efêmeros.
  • O tamanho do cache ou disco temporário associado ao tamanho da VM deve ser maior ou igual ao tamanho do disco de SO.
  • O tamanho do disco temporário deve ser maior que o tamanho do disco de cache.

Considere também esses problemas nas seguintes situações:

  • Criação do esquema de provisionamento.
  • Modificação do esquema de provisionamento.
  • Atualização da imagem.

Otimização de armazenamento de disco efêmero do Azure e do MCS (Machine Creation Services) (MCS I/O)

O disco de SO efêmero do Azure e o MCS I/O não podem estar ativados ao mesmo tempo.

As considerações importantes são as seguintes:

  • Não é possível criar um catálogo de máquinas com o disco de SO efêmero e o MCS I/O ativados ao mesmo tempo.

  • Os parâmetros do PowerShell (UseWriteBackCache e UseEphemeralOsDisk) falham com uma mensagem de erro apropriada se você os definir como true em New-ProvScheme ou Set-ProvScheme.
  • Para catálogos de máquinas existentes criados com os dois recursos ativados, você ainda pode:
    • atualizar um catálogo de máquinas.
    • adicionar ou excluir VMs.
    • excluir um catálogo de máquinas.

Criptografia do servidor do Azure

O Citrix Virtual Apps and Desktops e o Citrix DaaS oferecem suporte a chaves de criptografia gerenciadas pelo cliente para discos gerenciados do Azure por meio do Azure Key Vault. Com esse suporte, você pode gerenciar seus requisitos organizacionais e de conformidade criptografando os discos gerenciados de seu catálogo de máquinas usando sua própria chave de criptografia. Para obter mais informações, consulte Server-side encryption of Azure Disk Storage.

Ao usar esse recurso para discos gerenciados:

  • Para alterar a chave com a qual o disco está criptografado, altere a chave atual no DiskEncryptionSet. Todos os recursos associados a essa alteração de DiskEncryptionSet devem ser criptografados com a nova chave.

  • Quando você desabilita ou exclui sua chave, todas as VMs com discos que usam essa chave são desligadas automaticamente. Após o desligamento, as VMs não são utilizáveis, a menos que a chave seja habilitada novamente ou você atribua uma nova chave. Qualquer catálogo usando a chave não pode ser ligado e você não pode adicionar VMs a ele.

Considerações importantes ao usar chaves de criptografia gerenciadas pelo cliente

Considere o seguinte ao usar esse recurso:

  • Todos os recursos relacionados às chaves gerenciadas pelo cliente (Azure Key Vaults, conjuntos de criptografia de disco, VMs, discos e instantâneos) devem residir na mesma assinatura e região.

  • Depois de habilitar a chave de criptografia gerenciada pelo cliente, você não poderá desativá-la posteriormente. Se quiser desativar ou remover a chave de criptografia gerenciada pelo cliente, copie todos os dados para um disco gerenciado diferente que não esteja usando a chave de criptografia gerenciada pelo cliente.

  • Os discos criados a partir de imagens personalizadas criptografadas usando criptografia no lado do servidor e chaves gerenciadas pelo cliente devem ser criptografados usando as mesmas chaves gerenciadas pelo cliente. Esses discos devem estar na mesma assinatura.

  • Os instantâneos criados a partir de discos criptografados com criptografia do lado do servidor e chaves gerenciadas pelo cliente devem ser criptografados com as mesmas chaves gerenciadas pelo cliente.

  • Discos, instantâneos e imagens criptografados com chaves gerenciadas pelo cliente não podem ser movidos para outro grupo de recursos e assinatura.

  • Os discos gerenciados criptografados atualmente ou anteriormente usando a Criptografia de Disco do Azure não podem ser criptografados usando chaves gerenciadas pelo cliente.

  • Consulte o site da Microsoft para ver as limitações dos conjuntos de criptografia de disco por região.

Nota:

Consulte Quickstart: Create a Key Vault using the Azure portal para obter informações sobre como configurar a criptografia do lado do servidor do Azure.

Chave de criptografia gerenciada pelo cliente do Azure

Ao criar um catálogo de máquinas, você pode escolher se deseja criptografar dados nas máquinas provisionadas no catálogo. A criptografia no lado do servidor com uma chave de criptografia gerenciada pelo cliente permite gerenciar a criptografia em um nível de disco gerenciado e proteger os dados nas máquinas no catálogo. Um Conjunto de Criptografia de Disco (DES) representa uma chave gerenciada pelo cliente. Para usar esse recurso, você deve primeiro criar seu DES no Azure. Um DES está no seguinte formato:

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

Selecione um DES na lista. O DES selecionado deve estar na mesma assinatura e região que seus recursos. Se a imagem estiver criptografada com um DES, use o mesmo DES ao criar o catálogo da máquina. Você não pode alterar o DES depois de criar o catálogo.

Se você criar um catálogo com uma chave de criptografia e depois desabilitar o DES correspondente no Azure, não poderá mais ligar as máquinas no catálogo ou adicionar máquinas a ele.

Hosts dedicados do Azure

Você pode usar o MCS para provisionar VMs em hosts dedicados do Azure. Antes de provisionar VMs em hosts dedicados do Azure:

  • Crie um grupo de hosts.
  • Crie hosts nesse grupo de hosts.
  • Verifique se há capacidade de host suficiente reservada para a criação de catálogos e máquinas virtuais.

Você pode criar um catálogo de máquinas com locação de host definida por meio do seguinte script do 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-->

Ao usar o MCS para provisionar máquinas virtuais em hosts dedicados do Azure, considere:

  • Um host dedicado é uma propriedade de catálogo e não pode ser alterado depois que o catálogo é criado. Atualmente, a locação dedicada não é suportada no Azure.
  • Um grupo de hosts do Azure pré-configurado, na região da unidade de hospedagem, é necessário ao usar o parâmetro HostGroupId.
  • É necessário o posicionamento automático do Azure. Essa funcionalidade faz uma solicitação para integrar a assinatura associada ao grupo de hosts. Para obter mais informações, consulte VM Scale Set on Azure Dedicated Hosts - Public Preview Se o posicionamento automático não estiver habilitado, o MCS emitirá um erro durante a criação do catálogo.

Galeria de Imagens Compartilhadas do Azure

Use a Galeria de Imagens Compartilhadas do Azure como um repositório de imagens publicadas para máquinas provisionadas do MCS no Azure. Você pode armazenar uma imagem publicada na galeria para acelerar a criação e a hidratação dos discos de SO, melhorando os tempos de início e de inicialização do aplicativo para VMs não persistentes. A galeria de imagens compartilhadas contém os três elementos a seguir:

  • Galeria: as imagens são armazenadas aqui. O MCS cria uma galeria para cada catálogo de máquinas.
  • Definição de imagem na galeria: esta definição inclui informações (tipo e estado do sistema operacional, região do Azure) sobre a imagem publicada. O MCS cria uma definição de imagem para cada imagem criada para o catálogo.
  • Versão da imagem da galeria: cada imagem em uma Galeria de imagens compartilhadas pode ter várias versões, e cada versão pode ter várias réplicas em diferentes regiões. Cada réplica é uma cópia completa da imagem publicada.

Nota:

A funcionalidade da Galeria de Imagens Compartilhadas só funciona com discos gerenciados. Não está disponível para catálogos de máquinas legadas.

Para obter mais informações, consulte Azure shared image gallery overview.

Configurar a Galeria de Imagens Compartilhadas

Use o comando New-ProvScheme para criar um esquema de provisionamento com suporte à Galeria de Imagens Compartilhadas. Use o comando Set-ProvScheme para habilitar ou desabilitar esse recurso para um esquema de provisionamento e para alterar a taxa de réplica e os valores máximos de réplica.

Três propriedades personalizadas foram adicionadas aos esquemas de provisionamento para dar suporte ao recurso Galeria de Imagens Compartilhadas:

UseSharedImageGallery

  • Define se a Galeria de Imagens Compartilhadas deve ser usada para armazenar as imagens publicadas. Se definido como True, a imagem é armazenada como uma imagem da Galeria de Imagens Compartilhadas, caso contrário, a imagem é armazenada como um instantâneo.
  • Os valores válidos são true e false.
  • Se a propriedade não estiver definida, o valor padrão será False.

SharedImageGalleryReplicaRatio

  • Define a proporção de máquinas para réplicas de versão de imagem da galeria.
  • Os valores válidos são números inteiros maiores que 0.
  • Se a propriedade não estiver definida, os valores padrão serão usados. O valor padrão para discos de SO permanentes é 1000 e o valor padrão para discos de SO não persistentes é 40.

SharedImageGalleryReplicaMaximum

  • Define o número máximo de réplicas para cada versão da imagem da galeria.
  • Os valores válidos são números inteiros maiores que 0.
  • Se a propriedade não estiver definida, o valor padrão será 10.
  • Atualmente, o Azure oferece suporte a até 10 réplicas para uma versão única de imagem de galeria. Se a propriedade for definida com um valor maior do que o suportado pelo Azure, o MCS tentará usar o valor especificado. O Azure gera um erro, que registra o MCS deixa a contagem de réplicas atual inalterada.

Dica:

Ao usar a Galeria de Imagens Compartilhadas para armazenar uma imagem publicada para catálogos provisionados do MCS, o MCS define a contagem de réplicas da versão da imagem da galeria com base no número de máquinas no catálogo, na proporção de réplicas e no máximo de réplicas. A contagem de réplicas é calculada dividindo-se o número de máquinas no catálogo pela taxa de réplica (arredondando para o valor inteiro mais próximo) e, em seguida, limitando o valor à contagem máxima de réplicas. Por exemplo, com uma taxa de réplica de 20 e um máximo de 5, 0 a 20 máquinas têm uma réplica criada, 21 a 40 têm 2 réplicas, 41 a 60 têm 3 réplicas, 61 a 80 têm 4 réplicas, mais de 81 têm 5 réplicas.

Caso de uso: Atualizando a taxa de réplica da Galeria de Imagens Compartilhadas e o máximo de

O catálogo de máquinas existente usa a Galeria de Imagens Compartilhadas. Use o comando Set-ProvScheme para atualizar as propriedades personalizadas para todas as máquinas existentes no catálogo e quaisquer máquinas futuras:

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-->

Caso de uso: convertendo um catálogo de instantâneos em um catálogo da Galeria de Imagens Compartilhadas

Para esse caso de uso:

  1. Execute Set-ProvScheme com o sinalizador UseSharedImageGallery definido como True. Opcionalmente, inclua as propriedades SharedImageGalleryReplicaRatio e SharedImageGalleryReplicaMaximum.
  2. Atualizar o catálogo.
  3. Aplique um ciclo de energia nas máquinas para forçar uma atualização.

Por exemplo:

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-->

Dica:

Os parâmetros SharedImageGalleryReplicaRatio e SharedImageGalleryReplicaMaximum não são necessários. Após a conclusão do comando Set-ProvScheme, a imagem da Galeria de Imagens Compartilhadas ainda não foi criada. Depois que o catálogo estiver configurado para usar a galeria, a próxima operação de atualização do catálogo armazenará a imagem publicada na galeria. O comando de atualização do catálogo cria a galeria, a imagem da galeria e a versão da imagem. O ciclo de energia das máquinas as atualiza, momento em que a contagem de réplicas é atualizada, se apropriado. A partir desse momento, todas as máquinas não persistentes existentes são redefinidas usando a imagem da Galeria de Imagens Compartilhadas e todas as máquinas recém-provisionadas são criadas usando a imagem. O instantâneo antigo é limpo automaticamente dentro de algumas horas.

Caso de uso: conversão de um catálogo da galeria de imagens compartilhadas em um catálogo de instantâneos

Para esse caso de uso:

  1. Execute Set-ProvScheme com o sinalizador UseSharedImageGallery definido como False ou não definido.
  2. Atualizar o catálogo.
  3. Aplique um ciclo de energia nas máquinas para forçar uma atualização.

Por exemplo:

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-->

Dica:

Ao contrário da atualização de um instantâneo para um catálogo da Galeria de Imagens Compartilhadas, os dados personalizados de cada máquina ainda não foram atualizados para refletir as novas propriedades personalizadas. Execute o seguinte comando para ver as propriedades personalizadas originais da Galeria de Imagens Compartilhadas: Get-ProvVm -ProvisioningSchemeName catalog-name. Depois que o comando Set-ProvScheme for concluído, o instantâneo da imagem ainda não foi criado. Depois que o catálogo estiver configurado para não usar a galeria, a próxima operação de atualização do catálogo armazenará a imagem publicada como um instantâneo. A partir desse momento, todas as máquinas não persistentes existentes são redefinidas usando o instantâneo e todas as máquinas recém-provisionadas são criadas a partir do instantâneo. O ciclo de energia das máquinas as atualiza, momento em que os dados personalizados da máquina são atualizados para refletir que UseSharedImageGallery está definido como False. Os ativos antigos da Galeria de Imagens Compartilhadas (galeria, imagem e versão) são limpos automaticamente em algumas horas.

Provisionar máquinas em zonas de disponibilidade especificadas

Você pode provisionar máquinas em zonas de disponibilidade específicas em ambientes do Azure. Você pode conseguir isso usando o PowerShell.

Nota:

Se nenhuma zona for especificada, o MCS permitirá que o Azure coloque as máquinas dentro da região. Se mais de uma zona for especificada, o MCS distribuirá aleatoriamente as máquinas entre elas.

Configuração de zonas de disponibilidade por meio do PowerShell

Com o PowerShell, você pode visualizar os itens de inventário oferecidos usando Get-Item. Por exemplo, para visualizar a oferta de serviços da Eastern US region Standard_B1ls:

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

Para visualizar as zonas, use o parâmetro AdditionalData para o item:

$serviceOffering.AdditionalData

Se as zonas de disponibilidade não forem especificadas, não haverá alteração na forma como as máquinas são provisionadas.

Para configurar zonas de disponibilidade por meio do PowerShell, use a propriedade personalizada Zones disponível com a operação New-ProvScheme. A propriedade Zones define uma lista de zonas de disponibilidade para provisionar máquinas. Essas zonas podem incluir uma ou mais zonas de disponibilidade. Por exemplo, <Property xsi:type="StringProperty" Name="Zones" Value="1, 3"/> para as zonas 1 e 3.

Use o comando Set-ProvScheme para atualizar as zonas para um esquema de provisionamento.

Se for fornecida uma zona inválida, o esquema de provisionamento não será atualizado e uma mensagem de erro será exibida fornecendo instruções sobre como corrigir o comando inválido.

Dica:

Se você especificar uma propriedade personalizada inválida, o esquema de provisionamento não será atualizado e será exibida uma mensagem de erro relevante.

Disco efêmero do Azure

Os discos efêmeros do Azure permitem que você redefina o objetivo do disco de cache para armazenar o disco de SO para uma máquina virtual habilitada para o Azure. Essa funcionalidade é útil para ambientes do Azure que exigem um disco SSD de maior desempenho em relação a um disco HDD padrão.

Nota:

Os catálogos persistentes não oferecem suporte a discos de SO efêmeros.

Os discos de SO efêmeros exigem que seu esquema de provisionamento use discos gerenciados e uma Galeria de Imagens Compartilhadas. Para obter mais informações, consulte Galeria de Imagens Compartilhadas do Azure.

Usando o PowerShell para configurar um disco efêmero

Para configurar um disco de SO efêmero do Azure para um catálogo, use o parâmetro UseEphemeralOsDisk em Set-ProvScheme. Defina o valor do parâmetro UseEphemeralOsDisk como true.

Nota:

Para usar esse recurso, você também deve habilitar os parâmetros UseManagedDisks e UseSharedImageGallery.

Por exemplo:

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-->

Armazenando um disco temporário do sistema operacional efêmero

Você tem a opção de armazenar um disco de SO efêmero no disco temporário da VM ou em um disco de recursos. Essa funcionalidade permite que você use um disco de SO efêmero com uma VM que não tenha um cache ou que tenha cache insuficiente. Essas VMs têm um disco temporário ou de recursos para armazenar um disco de SO efêmero, como Ddv4.

Considere o seguinte:

  • Um disco efêmero é armazenado no disco de cache da VM ou no disco temporário (recurso) da VM. O disco de cache tem preferência em relação ao disco temporário, a menos que o disco de cache não seja grande o suficiente para conter o conteúdo do disco de SO.
  • Para atualizações, uma nova imagem maior que o disco de cache, mas menor que o disco temporário, resulta na substituição do disco de SO efêmero pelo disco temporário da VM.

Preservação de uma máquina virtual provisionada durante o ciclo de energia

Escolha se deseja preservar uma máquina virtual provisionada durante o ciclo de energia. Use o parâmetro do PowerShell New-ProvScheme CustomProperties. Esse parâmetro oferece suporte a uma propriedade extra, PersistVm, usada para determinar se uma máquina virtual provisionada persiste quando a energia é desligada. Defina a propriedade PersistVm como true para manter uma máquina virtual quando desligada ou defina a propriedade como false para garantir que a máquina virtual não seja preservada quando desligada.

Nota:

A propriedade PersistVm só se aplica a um esquema de provisionamento com as propriedades CleanOnBoot e UseWriteBackCache habilitadas. Se a propriedade PersistVm não for especificada para máquinas virtuais não persistentes, elas serão excluídas do ambiente do Azure quando desligadas.

No exemplo a seguir, o parâmetro New-ProvScheme CustomProperties define a propriedade PersistVm como 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-->

No exemplo a seguir, o New-ProvScheme CustomProperties parâmetro preserva o cache de gravação PersistVM definindo como true:

 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-->

Dica:

A propriedade PersistVm determina se uma máquina virtual provisionada deve ser preservada. A propriedade PersistOsdisk determina se o disco de SO deve ser mantido. Para preservar uma máquina virtual provisionada, primeiro preserve o disco de SO. Você não pode excluir o disco de SO sem primeiro excluir a máquina virtual. Você pode usar a propriedade PersistOsdisk sem usar a especificação do parâmetro PersistVm.

Tipos de armazenamento

Selecione diferentes tipos de armazenamento para máquinas virtuais em ambientes do Azure que usam o MCS. Para VMs de destino, o MCS oferece suporte a:

  • Disco de SO: SSD, SSD ou HDD premium
  • Disco de cache de gravação: SSD, SSD ou HDD premium

Ao usar esses tipos de armazenamento, considere o seguinte:

  • Certifique-se de que sua VM oferece suporte ao tipo de armazenamento selecionado.
  • Se sua configuração usar um disco efêmero do Azure, você não terá a opção de configuração de disco de cache de write-back.

Dica:

StorageType está configurado para um tipo de sistema operacional e uma conta de armazenamento. WBCDiskStorageType está configurado para o tipo de armazenamento de cache de gravação. Para um catálogo normal, é necessário StorageType. Se WBCDiskStorageType não estiver configurado, StorageType será usado como padrão para WBCDiskStorageType.

Se WBCDiskStorageType não estiver configurado, StorageType será usado como padrão para WBCDiskStorageType.

Configurando tipos de armazenamento

Para configurar os tipos de armazenamento para a VM, use o parâmetro StorageType em New-ProvScheme. Defina o valor do parâmetro StorageType como um dos tipos de armazenamento compatíveis.

Veja a seguir um exemplo de conjunto do parâmetro CustomProperties em um esquema de provisionamento:

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-->

Atualizar máquinas provisionadas para o estado atual do esquema de provisionamento

Set-ProvScheme altera o esquema de provisionamento. No entanto, isso não afeta as máquinas existentes. Usando o comando Request-ProvVMUpdate, você pode aplicar o esquema de provisionamento atual a uma máquina persistente ou não persistente existente ou a um conjunto de máquinas. Atualmente, a atualização de propriedade suportada por esse recurso é ServiceOffering.

Você pode atualizar:

  • Uma única VM.
  • Uma lista de VMs específicas ou todas as VMs existentes associadas a um ID de esquema de provisionamento.
  • Uma lista de VMs específicas ou todas as VMs existentes associadas a um nome de esquema de provisionamento.

Para atualizar as VMs existentes:

  1. Verifique a configuração das máquinas existentes. Por exemplo,

    ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion
    <!--NeedCopy-->
    
  2. Atualize o esquema de provisionamento. Por exemplo,

    ProvisioningSchemeName “my-catalog” –ServiceOffering “Standard_D16_v3”
    <!--NeedCopy-->
    
  3. Solicite a atualização das máquinas existentes. Por exemplo:

    • Para atualizar todas as máquinas existentes:

       Request-ProvVMUpdate –ProvisioningSchemeName “my-catalog”
       Get-ProvVM | select VMName,
       ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion
       <!--NeedCopy-->
      
    • Para atualizar uma lista de máquinas específicas:

       Request-ProvVMUpdate -ProvisioningSchemeName "my-catalog" -VMName "vm1","vm2"
       Get-ProvVM | select VMName,
       ProvisioningSchemeVersion
       <!--NeedCopy-->
      
    • Para atualizar máquinas com base na entrada de Get-ProvVM:

       Get-ProvVM -ProvisioningSchemeName "my-catalog" | Request-ProvVMUpdate
       Get-ProvVM | select VMName,
       ProvisioningSchemeVersion
       <!--NeedCopy-->
      
  4. Reinicialize as máquinas. Na próxima inicialização, o ProvisioningSchemeVersion nas máquinas será atualizado para corresponder à versão atual do esquema de provisionamento e o campo ProvisioningSchemeUpdateRequested será limpo.

Recuperar informações para VMs do Azure, instantâneos, disco de SO e definição de imagem da galeria

Você pode exibir informações para uma VM do Azure, incluindo disco de SO e tipo, instantâneo e definição de imagem da galeria. Essas informações são exibidas para recursos na imagem mestre quando um catálogo de máquinas é atribuído. Use essa funcionalidade para exibir e selecionar uma imagem do Linux ou do Windows. Uma propriedade do PowerShell, TemplateIsWindowsTemplate, foi adicionada ao parâmetro AdditionDatafield. Esse campo contém informações específicas do Azure: tipo de VM, disco de SO, informações da imagem da galeria e informações do tipo do sistema operacional. Se TemplateIsWindowsTemplate for definido como True, isso indica que o tipo de sistema operacional é Windows; se TemplateIsWindowsTemplate for definido como False, isso indica que o tipo de sistema operacional é Linux.

Dica:

As informações exibidas pela propriedade do TemplateIsWindowsTemplate PowerShell são derivadas da API do Azure. Em alguns casos, esse campo pode estar vazio. Por exemplo, um instantâneo de um disco de dados não contém o campo TemplateIsWindowsTemplate porque o tipo de sistema operacional não pode ser recuperado de um instantâneo.

Por exemplo, defina o parâmetro AdditionData da VM do Azure como True para o tipo de sistema operacional Windows usando o PowerShell:

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-->

Catálogos de máquinas com início confiável

Para criar com êxito um catálogo de máquinas com início confiável, use:

  • Um perfil de máquina com início confiável
  • Um tamanho de VM que ofereça suporte ao início confiável
  • Uma versão de VM do Windows que ofereça suporte ao início confiável. Atualmente, o Windows 10 e o Windows Server 2016, 2019 e 2022 oferecem suporte ao início confiável.

Importante:

O início confiável requer a criação de novas VMs. Você não pode ativar o início confiável em VMs existentes que foram inicialmente criadas sem ele.

Para exibir os itens de inventário da oferta do Citrix DaaS e determinar se o tamanho da VM suporta o início confiável, execute o seguinte comando:

  1. Abra uma janela do PowerShell.
  2. Execute asnp citrix* para carregar os módulos do PowerShell específicos à Citrix.
  3. Execute o seguinte comando:

    $s = (ls XDHyp:\HostingUnits<name of hosting unit>\serviceoffering.folder\“<VM size>.serviceoffering)
    <!--NeedCopy-->
    
  4. Execute $s | select -ExpandProperty Additionaldata
  5. Verifique o valor do atributo SupportsTrustedLaunch.

    • Se SupportsTrustedLaunch for True, o tamanho da VM é compatível com o início confiável.
    • Se SupportsTrustedLaunch for False, o tamanho da VM não é compatível com o início confiável.

De acordo com o PowerShell do Azure, você pode usar o seguinte comando para determinar os tamanhos de VM que suportam o início confiável:

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

Veja a seguir exemplos que descrevem se o tamanho da VM oferece ou não suporte ao início confiável após a execução do comando do Azure PowerShell.

  • Exemplo 1: se a VM do Azure oferecer suporte somente à Geração 1, a VM não é compatível com o início confiável. Portanto, o recurso TrustedLaunchDisabled não é exibido depois que você executa o comando do Azure PowerShell.
  • Exemplo 2: se a VM do Azure oferecer suporte somente à Geração 2 e o recurso TrustedLaunchDisabled for True, o tamanho da VM de Geração 2 não é compatível com o início confiável.
  • Exemplo 3: se a VM do Azure oferecer suporte somente à Geração 2 e o recurso TrustedLaunchDisabled não for exibido após a execução do comando PowerShell, o tamanho da VM de Geração 2 não é compatível com o início confiável.

Para obter mais informações sobre o início confiável de máquinas virtuais do Azure, consulte o documento da Microsoft Início confiável para máquinas virtuais do Azure.

Erros ao criar catálogos de máquinas com o início confiável

Você verá os erros apropriados nos seguintes cenários ao criar um catálogo de máquinas com início confiável:

Cenário Erro
Se você selecionar um perfil de máquina ao criar um catálogo não gerenciado MachineProfileNotSupportedForUnmanagedCatalog
Se você selecionar um perfil de máquina compatível com início confiável ao criar um catálogo com disco não gerenciado como imagem mestre SecurityTypeNotSupportedForUnmanagedDisk
Se você não selecionar um perfil de máquina ao criar um catálogo gerenciado com a origem de uma imagem mestre com início confiável como o tipo de segurança MachineProfileNotFoundForTrustedLaunchMasterImage
Se você selecionar um perfil de máquina com um tipo de segurança diferente do tipo de segurança da imagem mestre SecurityTypeConflictBetweenMasterImageAndMachineProfile
Se você selecionar um tamanho de VM que não ofereça suporte ao início confiável, mas usar uma imagem mestre compatível com início confiável ao criar um catálogo MachineSizeNotSupportTrustedLaunch

Azure Marketplace

O Citrix Virtual Apps and Desktops e o Citrix DaaS oferecem suporte ao uso de uma imagem mestre no Azure que contém informações do plano para criar um catálogo de máquinas. Para obter mais informações, consulte Microsoft Azure Marketplace.

Dica:

Algumas imagens encontradas no Azure Marketplace, como a imagem padrão do Windows Server, não acrescentam informações do plano. O recurso Citrix DaaS é para imagens pagas.

Verifique se a imagem criada na Galeria de Imagens Compartilhadas contém informações do plano do Azure

Use o procedimento nesta seção para visualizar imagens da Galeria de Imagens Compartilhadas no Citrix Studio. Opcionalmente, essas imagens podem ser usadas para uma imagem mestre. Para colocar a imagem em uma Galeria de Imagens Compartilhadas, crie uma definição de imagem em uma galeria.

Galeria de imagens compartilhadas do Azure Marketplace

Na página Publishing options, verifique as informações do plano de compra.

Os campos de informações do plano de compra estão inicialmente vazios. Preencha esses campos com as informações do plano de compra usadas para a imagem. Se você deixar de preencher as informações do plano de compra, isso pode causar falha no processo do catálogo de máquinas.

Azure Marketplace verifica as opções de publicação do VDA

Depois de verificar as informações do plano de compra, crie uma versão da imagem dentro da definição. Isso é usado como a imagem mestre. Clique em Add version:

Azure Marketplace adiciona a versão VDA

Na seção Version details, selecione o instantâneo da imagem ou o disco gerenciado como origem:

Opções de VDA selecionadas do Azure Marketplace

Sobre as permissões do Azure

Esta seção contém as permissões mínimas e gerais necessárias para o Azure.

Permissões mínimas

As permissões mínimas oferecem melhor controle de segurança. No entanto, novos recursos que exigem permissões adicionais falharão devido ao uso de permissões mínimas.

Criar uma conexão de host

Adicione uma nova conexão de host usando as informações obtidas do Azure.

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

Gerenciamento de energia de VMs

Ligue ou desligue as instâncias da máquina.

"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-->

Criar, atualizar ou excluir VMs

Crie um catálogo de máquinas e, em seguida, adicione, exclua, atualize máquinas e exclua o catálogo de máquinas.

A seguir está a lista de permissões mínimas necessárias quando a imagem mestre é um disco gerenciado ou os instantâneos estão localizados na mesma região da conexão de hospedagem.

"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-->

Você precisa das seguintes permissões extras com base nas permissões mínimas para os seguintes recursos:

  • Se a imagem mestre for um VHD em uma conta de armazenamento localizada na mesma região da conexão de hospedagem:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • Se a imagem mestre for uma ImageVersion da Galeria de Imagens Compartilhadas:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • Se a imagem mestre for um disco gerenciado. Instantâneos, ou VHD, está em uma região diferente da região da conexão de hospedagem:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     <!--NeedCopy-->
    
  • Se você usar o grupo de recursos gerenciados pela Citrix:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • Se você colocar a imagem mestre na Galeria de Imagens Compartilhadas:

     "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-->
    
  • Se você usar o suporte a host dedicado do Azure:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • Se você usar a criptografia do lado do servidor (SSE) com chaves gerenciadas pelo cliente (CMK):

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • Se você implantar VMs usando modelos ARM (perfil de máquina):

     "Microsoft.Resources/deployments/write",
     "Microsoft.Resources/deployments/operationstatuses/read",
     "Microsoft.Resources/deployments/read",
     "Microsoft.Resources/deployments/delete",
     <!--NeedCopy-->
    
  • Se você usar a especificação de modelo do Azure como um perfil de máquina:

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

Criação, atualização e exclusão de máquinas com disco não gerenciado

A seguir está a lista de permissões mínimas necessárias quando a imagem mestre é VHD e usa o grupo de recursos conforme fornecido pelo administrador:

"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-->

Permissão geral

A função de colaborador tem acesso total para gerenciar todos os recursos. Esse conjunto de permissões não impede que você obtenha novos recursos.

O conjunto de permissões a seguir fornece a melhor compatibilidade daqui para frente, embora inclua mais permissões do que o necessário com o conjunto de recursos atual:

"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-->

Mais informações