Redução de custos com VMs (Parte 2)
Fala pessoal, tudo bem com vocês?
Vamos a nossa parte dois de dicas para economizar com as máquinas virtuais do Azure nesse período de crise. Quem quiser conferir a parte 1 clique aqui.
Nesse tutorial vamos em alternativas mais radicais em quesito de contenção de gastos, o primeiro deles é desligar a máquina virtual completamente e só ligá-la quando for usar. Pensando nesse cenário vamos colocar o controle de ligar/desligar a máquina na mão do usuário e vou ensinar um jeito de fazer isso com Webhook
1 – Ligar/Desligar máquina via webhook.
No post anterior mostrei como criar uma conta de automação e um runbook, então vou pular algumas etapas e já vamos direto criar 2 runbooks, 1 para desligar a máquina e outro para ligar a máquina virtual
Runbook shutdown VM
Primeiro vamos criar um runbook do tipo Powershell com o nome Shutdown-VM dentro da conta de automação:
Após criado, vamos editar o runbook e 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
*(lembrando que os campos NOMEDAVM e NOMEDOGRUPODERECURSOS devem conter as informações de sua conta)
No meu caso ficou assim:
Runbook startup VM
Agora vamos criar mais um runbook do tipo powershell para iniciar nossa VM e vamos repetir o processo anterior, conforme imagem abaixo:
Após criado, vamos editar o runbook e 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
*(lembrando que os campos NOMEDAVM e NOMEDOGRUPODERECURSOS devem conter as informações de sua conta)
No meu caso ficou assim:
Agora dois runbooks foram criados, um para desligar e outro para ligar a VM, agora vamos configurar o webhook para esses runbooks.
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 que clicou em Adicionar Webhook, ira aparecer uma tela onde você deverá preencher o nome do webhook, e a data para expirar. No último item terá a nossa URL, copie essa url
Esse ultimo item URL será a nossa url externa que vamos utilizar, copie essa url e clique em ok, a url será algo parecido com isso:
https://s11events.azure-automation.net/webhooks?token=91I0y%2bykcQFrsb6nd6wvW0p0
pronto! Nosso primeiro webhook foi criado:
Agora precisa repetir o mesmo processo para o segundo runbook e no final teremos duas urls:
Shutdown-vm (webhook do runbook shutdown-vm)
https://s11events.azure-automation.net/webhooks?token=91I0y%2bykcQFrsb6nd6wvW0p0
Startup-vm (webhook do runbook startup-vm)
https://s11events.azure-automation.net/webhooks?token=Ea%2fMRHz9Pm9r8FxOyymYxpIw4pJewC6iWHjgRUA%3d
Agora vamos criar dois scripts powershell, um para cada url! A sintaxe do comando será igual abaixo:
Invoke-WebRequest -Method Post -Uri https://sua_url_webhook No computador, basta abrir o bloco de notas e colar o seu comando e salvar com extensão ps1
Faça o mesmo processo para as duas urls e no final você terá os dois scritps! Um para ligar a máquina e outro para desligar
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”:
Feito isso o usuário não terá mais problemas em executar o script e agora já pode testar os scripts recém criados
Para iniciar a máquina virtual, basta executar o script “startup-vm” e para desligar a máquina virtual basta executar o script “shutdown-vm”. Você pode acompanhar se o script foi executado com êxito, dentro do portal do azure na conta de automação ou na tela do runbook:
Com tudo isso, você pode deixar a VM maior parte do tempo desligada e dar a autonomia para o usuário ligar só quando for usar e desligar se não for usar mais.
Achei sensacional o post, mais tenho uma dúvida como essa URL sendo utilizada de forma pública, como isso tornaria seguro em um ambiente real por exemplo, só uma dúvida que surgiu agora.