Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Olá a todos!
Como sabemos, em Cloud Computing pagamos por recursos consumidos, e as vezes temos a demanda de manter um servidor ligado somente durante o horário comercial, por exemplo.
Nesse post irei demonstrar como fazer um agendamento para iniciar e desligar uma VM automaticamente usando o Azure Automation.

O Azure Automation é um serviço de configuração e automação do Azure.

Para mais detalhes, clique aqui: https://docs.microsoft.com/en-us/azure/automation/automation-intro


Mão a massa!


O primeiro passo é criar uma conta do Azure Automation.
Pesquise por "Automation" e depois clique em "Automation Accounts" e depois "Create Automation Accounts"
Na opção "Create Azure Run As account" deixe selecione "Yes"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


Após o recurso ser criado, nas opções "Process Automation" selecione "Runbooks" e depois "Add a runbook"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Na próxima tela selecione "Create a new runbook"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Depois de criado, cole o código abaixo e depois clique em "Save"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


# Input Parameters for
# - VmName: name of the vm to perform action to
# - ResourceGroupName: resource group where the vm belongs to
# - VmAction:action to perform (startup or shutdown)
Param(
[string]$VmName,
[string]$ResourceGroupName,
[ValidateSet("Startup", "Shutdown")]
[string]$VmAction
)
# Authenticate with your Automation Account
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
# Startup VM
IF ($VmAction -eq "Startup") {
Start-AzureRmVM -Name $VmName -ResourceGroupName $ResourceGroupName
}
# Shutdown VM
IF ($VmAction -eq "Shutdown") {
Stop-AzureRmVM -Name $VmName -ResourceGroupName $ResourceGroupName -Force
}
Note que temos 3 parâmetros a serem configurados:

  1. Nome da VM
  2. Nome do grupo de recursos no qual a VM pertence
  3. Ação: Startup ou Shutodown


Testando


Podemos testar o nosso script antes de coloca-lo em produção.
Para isso clique no ícone "Test pane"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Na próxima tela entre com os parâmetros que citamos acima e clique em "Start" 

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Abaixo o resultado do teste. Como podemos ver executou sem nenhum erro.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


Publicando o Runbook


O próximo passo é publicar o Runbook.
Para isso clique no botão "Publish" e depois confirme.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Criando o agendamento


Clique em "Schedules"e depois em "Add a Schedule"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Na tela seguinte clique em "Link a schedule to your runbook" > "Create a new schedule".
Dê um nome para o agendamento e configure o horario de Start da VM.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

O próximo passo é configurar os parâmetros, idêntico ao que fizemos no teste.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Repita o agendamento para o desligamento, alterando o parâmetro "VMACTION" para "Shutdown".

Visualizando a execução dos Jobs


Acessando o recurso Automation Account, podemos visualizar detalhes dos Job.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


É isso ai pessoal!

Grande abraço,

Breno Padovan