Desligando e Ligando VMs no Microsoft Azure pelo Automation
Introdução
Hoje vamos falar sobre uma feature que é muito usado no Microsoft Azure, o "Automation" com ele você consegue economizar tempo e reduzir custos.
Na Automação do Azure, os runbooks do Windows PowerShell ajudam a trabalhar de forma mais inteligente ao controlar a criação, implantação, monitoramento e manutenção dos recursos do Azure e de aplicativos de terceiros.
Com o recurso do Active Directory no Azure fica mais simples integração desse serviço, criando um usuário de serviço no AD Azure e este usuário vai fazer a tarefa, facilitando e otimizando administração do ambiente no dia a dia.
Nesse artigo vamos ver como criar um Automation para ligar e desligar as VMs.
Criando Usuário de Serviço
Para a criação do usuário vamos ao Active Directory no Azure, em seguida vamos em Usuários depois Adicionar Usuários
**
**
Na criação você tem três opções para a criar o usuário, Novo Usuário na sua Organização, Usuário com a conta na Microsoft Existente ou Usuário em outro diretório do AD Microsoft Azure.
Nesse artigo vou criar um usuário novo para minha organização, de um nome para o usuário e clique em avançar
Em seguida coloque o Nome e **Nome para Exibição **e cliquem em Next
Clique em Criar
Em seguida acesse a conta do usuário e altere a senha. Agora vamos adicionar o usuário como Co Administrador em sua assinatura no Microsoft Azure.
Vá em Configurações>Administradores>Adicionar
Pronto seu usuário já está pronto para ser usuário.
Criando Automation
Para a criação vamos em Automation>Criar
Em seguida de um Nome para Conta e escolha a Região, depois clique em Criar
Pronto seu Automation está criado.
Adicionar usuário para executar o Runbook
Selecione a sua Automation, em seguida vá em Assets>Add Settings
Selecione a opção Add Credential
Agora selecione o tipo de credencial que o usuário vai utilizar, vamos escolher **Windows PowerShell Credetial. **Adicione o usuário em seguida clique em Next
Em seguida adicione o usuário e senha e clique e Finalizar
Pronto o usuário foi adicionado com sucesso.
Modelos de Script
Segue o modelo para ligar e desligar, lembrando que é um exemplo bem simples para automatizar seu ambiente.
Start-AzureVM
workflow Start-AzureVM
{
#Configuração do Script para Ligar a VM, criado por Michel Jatobá.
$AutomationCredential = "userautomation@dominio.com.br" # Credencial que vai ser utilizada para executar o Script.
$AzureSubscription = "Subscrption Demo" #Selecione o nome da Subscription
$ServiceNamesToIgnore = @("Server-01","Server-02") # Adicione os "ServiceName" de cada Servidor que vai ser ligado.
$HostNamesToIgnore = @("Server01-01","Server-02") # Adicione os "HostName" de cada Servidor que vai ser ligado.
$Cred = Get-AutomationPSCredential -Name $AutomationCredential
$output = Add-AzureAccount -Credential $Cred
Select-AzureSubscription -SubscriptionName $AzureSubscription
Write-Output "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
Write-Output "Iniciando Serviço"
Write-Output "Iniciando as VMs!!!"
Get-AzureVM | ? -Filterscript { $_.Status -eq 'StoppedDeallocated' `
-and $ServiceNamesToIgnore -notcontains $_.ServiceName `
-and $HostNamesToIgnore -notcontains $_.Name } |
ForEach-Object {
Write-Output "Ligando as VMs : $($_.Name), ServiceName $($_.ServiceName)"
$null = Start-AzureVM -Name $_.Name -ServiceName $_.ServiceName
}
Write-Output "Ligamento Completo da VMs "
Write-Output "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
}
*Stop-AzureVM
*
workflow Stop-AzureVM
{
#Configuração do Script para Desligar a VM, criado por Michel Jatobá.
$AutomationCredential = "userautomation@dominio.com.br" # Credencial que vai ser utilizada para executar o Script.
$AzureSubscription = "Subscription Demo" #Selecione o nome da Subscription
$ServiceNamesToIgnore = @("Server-01","Server-02") # Adicione os "ServiceName" de cada Servidor que não vai ser desligado.
$HostNamesToIgnore = @("Server-01","Server-02") # Adicione os "HostName" de cada Servidor que não vai ser desligado.
$Cred = Get-AutomationPSCredential -Name $AutomationCredential
$output = Add-AzureAccount -Credential $Cred
Select-AzureSubscription -SubscriptionName $AzureSubscription
Write-Output "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
Write-Output "Iniciando Serviço"
Write-Output "Iniciando desligamento das VMs!!!"
Get-AzureVM | ? -Filterscript { $_.Status -eq 'ReadyRole' `
-and $ServiceNamesToIgnore -notcontains $_.ServiceName `
-and $HostNamesToIgnore -notcontains $_.Name } |
ForEach-Object {
Write-Output "Desligando a VM : $($_.Name), ServiceName $($_.ServiceName)"
$null = Stop-AzureVM -Name $_.Name -ServiceName $_.ServiceName -Force
}
Write-Output "Desligamento Completo da VMs "
Write-Output "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
}
Criando Runbook
Agora vamos criar o Runbook para ligar e desligar os servidores em seguida vamos agendar horários para fazer automaticamente.
Para a criação do Runbook, vá em Runbooks> Quick Create
1 - Vamos criar o Runbook com o nome **Start-AzureVM **e Stop-AzureVM;
2 - Escolha a conta criada **DemoAutomation; **
3 - Escolha a Subscription;
Em seguida cliquem em Create
Verifique os Runbooks criados
Em Runbooks clique em **Start-AzureVm **
Dentro do Runbook vá até a opção **Author **e adicione o Script abaixo:
Neste artigo crie três servidores com os nomes Automation-01, Automation-02, Automation-03, para demostrar para vocês como funciona.
No Script acima eu mandei ele ignorar dois dos três Servidores, ligando apenas o Automation-02.
Agora vamos o Test depois iremos fazer o Publish
Quando clicar em **Test, o Runbook ** vai verificar e executar o script
Pronto ele executou seu script com sucesso, ligou apenas o Servidor 2.
Criando Tarefas para o Runbook
Agora vamos criar uma tarefa para que ele faça isso diariamente, vá em Schedule e clique em Link To a New Schedule
Coloque um nome para a tarefa e clique em Next
Agora vamos escolher Daily para ligar todos os dias a partir das 8:00 da manhã
Pronto sua tarefa está criada, agora todo os dias essa tarefa vai ligar a máquina as 8:00 da manhã. Ai pode criar uma outra tarefa colocando um horário para ela desligar todos os dias a noite.
Créditos:
Este documento foi originalmente publicado como http://www.micheljatoba.com.br/2015/09/desligando-e-ligando-vms-no-microsoft.html e foi reproduzido aqui para permitir que a comunidade corrija eventuais imprecisões ou forneça outras melhorias antes de atualizar a versão original deste tópico.