Compartilhar via


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çãoUsuá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.