Como Ligar/Desligar uma VM do Azure via Webhook

Fala pessoal, beleza?

Neste post vou demonstrar de forma prática o processo de criação de Runbooks e Webhooks para ligar/desligar uma VM do Azure através de Scripts em sua área de trabalho.

Resumindo, vamos precisar de uma conta de automação para “Publicar” nossos Runbooks, também criaremos Webhooks que nos disponibilizarão uma URL para executar o Startup e Shutdown da VM.

Então, vamos começar!

Criação da conta de automação:

Primeiramente será necessário realizar a criação de uma conta de automação onde aplicaremos nossos Runbooks.

Criação do Runbook de Shutdown da VM:

Primeiro criaremos um Runbook do tipo Powershell dentro da conta de automação, com os seguintes parâmetros:

  • Confira sua versão do Runtime antes de realizar a criação dos Runbooks

Após a criação, vamos editar o Runbook, colocar o seguinte código e depois clicar em publicar.

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

Stop-AzureRmVM -force -Name NOMEDAVM -ResourceGroupName NOMEDOGRUPODERECURSOS

*(NOMEDAVM e NOMEDOGRUPODERECURSOS deverão ser alterados pelas respectivas informações da sua conta)

No meu caso ficou assim:

Criação do Runbook de Startup da VM:

Agora vamos criar um outro Runbook da mesma forma, porém dessa vez para realizar o Startup da VM.

Após a criação, vamos editar o Runbook, colocar o seguinte código e depois clicar em publicar.

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

Start-AzureRmVM -Name NOMEDAVM -ResourceGroupName NOMEDOGRUPODERECURSOS

*(NOMEDAVM e NOMEDOGRUPODERECURSOS deverão ser alterados pelas respectivas informações da sua conta)

No meu caso ficou assim:

Agora que criamos os runbooks, vamos criar os Webhooks que vão acionar o Shutdown e Startup da VM.

Webhook é um serviço externo que inicia um runbook específico na automação do Azure por meio de uma solicitação HTTP, para isso precisamos publicar a URL externa para cada runbook.

Vamos clicar no runbook recém-criado e no menu ao lado esquerdo no item “Recursos” vamos abrir o “Webhook” e depois “Adicionar Webhook”:

Depois de clicar em Adicionar Webhook, vai aparecer uma tela onde você deverá preencher o nome do Webhook, e a data para expirar. No último item terá a nossa URL, copie a mesma.

As URL’s serão parecidas com essas abaixo:

Shutdown:

https://c6fdc0ed-0eff-4c43-a62e-1505fc2b6439.webhook.brs.azure-automation.net/webhooks?TOKEN…

Startup:

https://c6fdc0ed-0eff-4c43-a62e-1505fc2b6439.webhook.brs.azure-automation.net/webhooks?TOKEN…

Realize o mesmo processo para os dois Runbooks.

Agora vamos criar dois scripts em Powershell, um para cada URL.

Basta abrir um bloco de notas no computador colar o comando abaixo e salvar com extensão .ps1

Sintaxe: Invoke-WebRequest -Method Post -Uri https://sua_url_webhook

Faça o mesmo processo para as duas URL’s e no final você terá dois scripts, um para acionar o Shutdown e outro para o Startup.

Em alguns casos ao executar o script apresenta uma tela de erro informando que o script não é assinado, para contornar esse problema, basta executar no powershell como administrador o comando “set-executionpolicy remotesigned”:

Após esses procedimentos, os scripts já estarão prontos para serem executados, porém antes precisaremos criar uma “Conta Executar como” para executar o Runbook com sucesso.

Após clicar em “Conta executar como” e em seguida “Conta executar como do Azure”, bastará selecionar a opção criar e o Azure realizará o processo.

Após a criação, a lacuna ficará assim:

Para ligar a máquina virtual você deverá acionar o script de Startup e para desligá-la será o script de Shutdown.

Na aba “Visão geral” dentro da “Conta de Automação” e dos Runbooks individualmente, é possível acompanhar se o script foi executado com sucesso.

Com isso a VM pode ficar desligada a maior parte do tempo, o usuário ligará apenas quando necessário e poderá desligá-la quando não estiver mais utilizando.

Até o próximo post!

1 Comentário

Faça um comentário

Seu e-mail não será divulgado.


*