Automatizar inicialização e desligamento de VMs do Azure

  Uma das coisas que mais pode tornar uma infraestrutura financeiramente inviável na nuvem é manter Máquinas Virtuais ligadas sem necessidade Suponhamos que você tenha um servidor de arquivos na nuvem, mas o acesso só acontece durante entre 8:00 e 18:00. A partir das 18:01 até 7:59 do dia seguinte, você está pagando por uma carga de trabalho ociosa, sem necessidade. Assim, vou mostrar para vocês, de forma simples, como reduzir este tipo de custo para sua infraestrutura na nuvem.

Crie uma conta de automação

O que é uma conta de automação? Como o próprio nome diz é um recurso que possibilita a criação de automações para a sua assinatura. Ou seja, nada mais de fazer tarefas repetidas manualmente, deixe que o próprio Azure Automation faça isso para você. O mais interessante é que os 500 primeiros minutos são gratuitos, portanto podemos criar esta automação sem haver qualquer impacto nos custos de sua atual infra na nuvem! As contas de automação permitem a criação de runbook (acostume-se com este termo), que nada mais são que livros de receita, que armazenarão toda a nossa automação. Você pode criar todo o tipo de runbook que faça os mais diversos tipos de tarefa. Você pode ler mais sobre eles na documentação oficial sobre Azure Automation. Vamos iniciar agora a criação da nossa automação!

1º Passo: Crie sua conta de automação

  1. Clique em + Novo Serviço
  2. Digite Automation e clique em Automação;
  3. Na área de descrição, clique em Criar.
No formulário de criação preencha desta forma:
  • Nome: AutomartionAcc
  • Assinatura: Selecione a assinatura que você quer usar
  • Grupo de Recursos: Neste caso estou criando um novo e chamando de “automation-rg”
  • Localização: Escolha “Sul do Brasil”

2º Passo: Crie e publique um runbook

Clique em Editar; você será direcionado para a página de confecção do script. Lá, será bem simples. Nós vamos colocar o script que vou deixar abaixo, que fará toda a automação da inicialização da sua VM.
Param(
 [string]$VmName,
 [string]$ResourceGroupName,
 [ValidateSet("Iniciar", "Desligar")]
 [string]$VmAction
)
# Autenticar na conta de automação
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
# Iniciar VM
IF ($VmAction -eq "Iniciar") {
    Start-AzureRmVM -Name $VmName -ResourceGroupName $ResourceGroupName
}
# Desligar VM
IF ($VmAction -eq "Desligar") {
    Stop-AzureRmVM -Name $VmName -ResourceGroupName $ResourceGroupName -Force
}
Salve as alterações e clique em Publicar.

3º Passo: Crie um agendamento recorrente

Agora que nosso script foi publicado iniciaremos o processo de agendamento recorrente dele
  • Clique em Agendar;
  • Selecione Vincule um agendamento ao seu runbook;
  • Siga os passos para criar uma agenda que seja recorrente, a cada 1 dia;
  • Clique em OK e vá para Configurar parâmetros e executar configurações;
    • Em VMName, digite o nome da VM que você deseja iniciar automaticamente;
    • Em ResourceGroupName coloque o nome do grupo de recurso em que sua VM está alocada;
    • Em VMAction use “Iniciar” ou “Desligar” (sem áspas);
    • Clique em OK;
  • Agora finalize e clique em OK novamente;
Para conferir seus agendamentos, em sua conta de automação, clique em Agendas e você poderá ver todos os agendamentos criados.
Dica: Neste post estou mostrando o processo apenas para ligar automaticamente. Você pode trocar para “Desligar”, se quiser utilizar o desligamento agendado.
 

Conclusão

Pessoal, neste post vocês aprenderam a criar de forma realmente simples uma automação de como inicializar ou desligar VMs no Azure. Dentre as vantagens trazidas em criar estas automações podemos falar sobre a grande redução de custos que isto pode trazer no fim do mês, já que as VMs são cobradas apenas quando ligadas. Muito obrigado e nos vemos em breve!