WVD e Power Platform

Gerenciamento do status do seu WVD pessoal na palma de sua mão.

Introdução

Em tempos onde apenas se fala no “novo normal” e produtividade é essencial que nós estejamos adequados a essa nova realidade para conduzir a nossa rotina de modo que possamos ter um aproveitamento mais eficiente do nosso tempo, e até mesmo as ações mais simples entram nessa dança, pois um montante cada vez maior de ações rápidas tomam cada vez mais tempo.

Tendo isso em mente podemos chegar em um ponto comum, automatizar é o caminho para a felicidade! Não ter que gastar várias horas com tarefas simples é um motivo para sorrir, não?!

Então vamos ao que importa!

Você já inicia o host da sua sessão no WVD de forma rápida pelo celular? Já utiliza essa facilidade na palma da sua mão?

Não!?

Então pega uma garrafa de água e me acompanhe que vou te mostrar como!

Estudo de caso

A Microsoft possui uma gama enorme de serviços e recursos em nuvem, e um deles é o Windows Virtual Desktop que é o serviço de área de trabalho virtual que roda no Azure, que oferece a capacidade de pagar apenas por segundo em que a VM está ligada, permitindo que você garanta que não está pagando pela VM quando ela não está em uso. E para realizar esse tipo de gerenciamento existem diversos serviços.

Vamos nos atentar à alguns pontos antes de iniciar.

Na plataforma de WVD existem dois tipos de pool de hosts, Pooled e Personal, o Pooled é para multi-sessões onde vários usuários fazem login simultaneamente em qualquer VM do pool, já o pool de host Personal são para sistemas operacionais de sessão única e cada VM é atribuída a um usuário e geralmente são mais caros. O nosso foco aqui será com o Personal.


Para saber mais sobre as configurações de WVD acesse a Windows Virtual Desktop Documentation


Mesmo dentre as diversas opções de gerenciamento do status do WVD, como escalonamento automático, automação de Start/Stop ou o recurso de desligamento automático, não possuímos muita flexibilidade quanto à horários variáveis, neste caso, horas extras e atividades não programadas se tornam um problema, pois seguindo o período configurado a VM será desligada independente do uso, o que pode acarretar perda de dados e uma experiência de usuário negativa.

Neste cenário qual seria a solução?

Entregar o controle de ativação e desligamento da VM ao usuário.

Mãos à obra

Agora que já entendemos o cenário, vamos à solução seguindo três passos simples e criar:

  • um Azure AD App e configurar o Service Principal no portal.
  • o fluxo de automação para requisições à API do Azure Compute.
  • o aplicativo Power Apps para gerenciamento.

Criar um Azure AD App e configurar o Service Principal no portal

Para essa etapa encontrei um material excelente com o passo a passo detalhado de configuração tanto a parte de registro de aplicativo quanto a configuração do Service Principal.

Esta documentação está hospedada no Github nos artigos do azure-docs.

É muito importante que você verifique as suas permissões no tenant para prosseguir com esses passos.

Criar o fluxo de automação para requisições à API do Azure Compute

Nesta estapa iremos utilizar o Power Automate para criar os fluxos automatizados de requisições para ligar e desligar a VM.

Para criar um fluxo devemos acessar https://us.flow.microsoft.com/ ou acessar o Power Automate através do Portal do Office 365, após isso clicamos na opção + Criar do menu lateral e escolher a opção e na seção Iniciar em branco clicar em Fluxo da nuvem automatizado.

Tela de criação de novo fluxo em branco no Power Automate

Nesta tela podemos clicar no botão Ignorar para avançarmos à tela de criação do fluxo, onde selecionaremos o PowerApps como gatilho do fluxo.

Seleção do PowerApps como gatilho na tela de seleção de conectores

Após incluir o PowerApps como gatilho vamos adicionar apenas mais uma única etapa com o conector HTTP, ele é um conector Premium que possibilita criar requisições HTTP à API’s diretamente do fluxo.

Tela de seleção de conectores para ações, no caso o conector para realizar métodos HTTP

Após criada a nova etapa com o conector HTTP, vamos configurar seus parâmetros para realizar uma requisição de método POST para a API do Azure Compute, com as informações da VM que desejamos manipular.

Parâmetros para requisição do método HTTP POST

Método: POST

URI: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-06-01

Nesta URI devemos substituir os valores entre chaves “{}” com as informações do nosso recurso de WVD, essa URI é descrita na documentação do Azure Compute, e sugiro realizar os testes de conexão através da opção Try It de cada método antes de avançar.

Na URI devemos incluir:

subscriptionID – Que é o ID da assinatura no Azure.

resourceGroupName – Que é o nome do grupo de recursos onde foi criado o recurso do WVD.

vmName – O nome da VM que será gerenciada.

comando (start/deallocate) – O método que a requisição irá executar.

versão da API – Verificar se a versão da API corresponde com a descrita na documentação.

Autenticação: Active Directory OAuth

Locatário: Tenant ID

Público-alvo: valor padrão (https://management.azure.com)

ID do cliente: Application ID gerado no momento de registro do aplicativo

Tipo de Credencial: Segredo

Segredo: App secret gerado no momento de registro do aplicativo

Será necessário criar um fluxo para ligar e outro para desligar a VM seguindo estes mesmos passos.

Criar o aplicativo Power Apps para gerenciamento

Vamos utilizar o PowerApps para criar o nosso aplicativo multiplataforma para interagir por meio dos fluxos criados com a VM, podendo assim, gerenciá-la.

Primeiramente devemos acessar o ambiente de criação através da URL https://make.powerapps.com/ ou pelo Portal do Office 365.

Página inicial do ambiente PowerApps

Selecionamos + Criar no menu lateral e escolhemos a opção Aplicativo de Tela em branco na seção Iniciar em branco.

Tela para criação de novo aplicativo de tela em branco

Para criação do aplicativo vamos utilizar apenas dois botões, um para ligar a VM e outro para desligar.

Visualização do editor de aplicativo

No parâmetro OnSelect de cada um dos dois botões, incluímos cada um dos fluxos criados no Power Automate o WVDPowerOn para o botão On e o WVDPowerOff para o botão Off.

Tela de inserção de fluxos do Power Automate no aplicativo

O parâmetro OnSelect dos dois botões serão preenchidos com as funções WVDPowerOn.Run() e WVDPowerOff().

Feito isso, podemos salvar o aplicativo, publicá-lo e integrá-lo a qualquer plataforma, inclusive o Microsoft Teams.

Ao clicar nos botões On ou Off, poderemos ver a VM entrando em processo de desativação/ativação no portal do Azure.

Aplicativo finalizado e com as ações dos fluxos inclusas no botões
Visualização do status da VM

Pronto, temos uma solução simples para facilitar a vida de quem usa o pool de host Personal do WVD, auxiliando num melhor gerenciamento de tempo e custo.

Para mais informações ou ideias, entrem em contato!

Referências:

How to: Use the portal to create an Azure AD application and service principal that can access resources – azure-docs/howto-create-service-principal-portal.md at master · MicrosoftDocs/azure-docs · GitHub

Tom Hickling Blog – Windows Virtual Desktop and Azure – How to power on your Windows Virtual Desktop personal VM from the comfort of your bed. | Tom Hickling (xenithit.blogspot.com)

Power on and off your Personal WVD Desktops Using your mobile device – Mahmoud A. ATALLAH – Power On And Off Your Personal WVD Desktops Using Your Mobile Device – 3tallah’s Blog

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *