Published on

September 3, 2017

Automatizando VMs do Azure com PowerShell

Você já esqueceu de desligar uma máquina virtual (VM) do Azure e acabou tendo custos inesperados? Isso acontece com os melhores de nós. Mas não se preocupe, porque o PowerShell (PoSH) pode te ajudar!

Neste post do blog, vamos explorar como usar o PowerShell para automatizar o processo de desligar ou ligar VMs do Azure. Embora isso não esteja diretamente relacionado ao SQL Server, é uma habilidade útil de se ter se você estiver trabalhando com o Azure.

Antes de mergulharmos no script, vamos discutir brevemente o que é o PowerShell. O PowerShell é uma linguagem de script desenvolvida pela Microsoft que permite automatizar tarefas administrativas e gerenciar vários produtos da Microsoft, incluindo o Azure.

Agora, vamos dar uma olhada no script fornecido pelo autor:


# Instale os módulos do Azure Resource Manager da PowerShell Gallery
Install-Module AzureRM

# Faça login no Azure
Login-AzureRmAccount

$NewStatus = "Off"  ## Valores = On, Off ou Flip
$RGName = ""        ## Opcional. Se não for "", restringir apenas às VMs no Grupo de Recursos.

IF ($RGName -ne "") {
    ## Obtenha apenas as VMs para o GR solicitado.
    $VMs = Get-AzureRmVM -Status -ResourceGroupName $RGName
}
ELSE {
    ## Obtenha todas as VMs independentemente do GR.
    $VMs = Get-AzureRmVM -Status
}

## Percorra cada VM
foreach ($VM in $VMs) {
    ## Se a VM estiver desalocada e quisermos ligá-la ou inverter, ligue-a.
    IF ($VM.PowerState -eq "VM deallocated" -and ($NewStatus -eq "On" -Or $NewStatus -eq "Flip")) {
        "Iniciando " + $VM.Name
        Start-AzureRmVM -ResourceGroupName $VM.ResourceGroupName -Name $VM.Name
    }
    ## Se a VM não estiver desalocada e quisermos desligá-la ou inverter, desligue-a.
    ELSEIF ($VM.PowerState -ne "VM deallocated" -and ($NewStatus -eq "Off" -Or $NewStatus -eq "Flip")) {
        "Desligando " + $VM.Name
        Stop-AzureRmVM -ResourceGroupName $VM.ResourceGroupName -Name $VM.Name -Force
    }
}

## Liste o status atual
Get-AzureRmVM -Status | SELECT Name, PowerState

Este script permite que você especifique se deseja ligar todas as VMs, desligá-las ou inverter o status delas. Ao inverter o status, você pode alternar facilmente entre ligá-las e desligá-las. Além disso, você pode optar por restringir a operação a VMs dentro de um grupo de recursos específico.

É importante observar que o script requer os módulos do Azure Resource Manager, que podem ser instalados usando a PowerShell Gallery. Você também precisa fazer login na sua conta do Azure antes de executar o script.

Depois de ter os módulos necessários e estar logado, você pode executar o script e observar enquanto ele desliga ou liga suas VMs do Azure com base nos critérios especificados.

Embora o script fornecido seja um ótimo ponto de partida, o autor menciona que ainda não descobriu como automatizar a tarefa de login sem intervenção manual. Se você é um especialista em PowerShell e tem uma solução, o autor adoraria ouvir de você!

Lembre-se, automatizar tarefas como gerenciar VMs do Azure pode economizar tempo e dinheiro. Então, experimente o PowerShell e veja como ele pode simplificar seu fluxo de trabalho no Azure.

Isso é tudo para o post do blog de hoje. Fique ligado para mais conteúdo relacionado ao SQL Server no futuro!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.