domingo, 31 de maio de 2020

Automatizando Manipulações de Recursos no Azure


O Portal do Azure fornece a possibilidade de criar contas de automatização para executar comandos para gerenciamento dos recursos, são os mais diversos cenários que podem necessitar de processos automáticos e recorrentes, desde a possibilidade de ativar ou desativar um recurso em horário não comercial para economia financeira, a criação de regras  especiais de monitoramente para redimensionamento de recursos, desprovisionar ambientes de desenvolvimento ou homologação, dentre tantas outras possibilidades.

Vamos para um exemplo prático, ligar e desligar uma máquina virtual de homologação, restringido seu funcionamento ao horário comercial.

1. Criando uma Conta de Automação

 


Importante: para que seus comandos possam ser executados, é preciso marcar a opção "Criar conta Exectar como do Azure", essa permissão irá criar um usuário no Azure Active Directory para permissão colaborador para ser utilizado dentro da automação. 

2. Criando um RunBook

Acesse a conta de automação que foi criada anteriormente, na barra lateral selecione a opção "Runbooks  (Runbook é conjunto de operações que serão executado dentro da agenda definida internamente). Selecione a opção "Criar um runbook"

 

Importante: em "Tipo de runbook" iremos utilizar a forma mais trivial de manipular recursos "PowerShell", porém existem outros formatos que podem facilitar quando houver um processo decisório, como a opção "Fluxo de Trabalho do PowerShell"

Depois de criar a tela para edição do mesmo será aberta, coloque o código que recupera a conexão atual da conta de aumtoação e efetuar a ligação da VM.


$servicePrincipalConnection = Get-AutomationConnection -Name
AzureRunAsConnection
$connectionResult =  Connect-AzAccount -Tenant $servicePrincipalConnection.TenantID `
                            -ApplicationId $servicePrincipalConnection.ApplicationID   `
                            -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint `
                            -ServicePrincipal
 Start-AzVM -ResourceGroupName "gr-VM-hml" -Name "vm-homolog"

Sempre que criar um runbook é fundamental que efetuamos o teste em ambiente controlado, veja que existe a opção "Painel de Teste", porém de executar esses comandos, precisamos incluir as bibliotecas necessárias dentro da conta de automação. 

4. Adicionando Módulos

Para o comando "Connect-AzAccount" precisamos do módulo " Az.Accounts" e no caso do comando "Start-AzVM" necessitamos do módulo "Az.Compute", basta selecionar a opção "Adicionar um módulo"

Para efetuarmos a inclusão devemos acessar a opção "Galera de Módulos" na barra lateral, basta pesquisar pelo nome do módulo, clicar no módulo e clicar na opção "Importar", processa a mesma ação para o outro módulo

Para verificar o status da instalação, basta acessa o menu na barra lateral "Módulos"


5. Testando e Publicando seu runbook

Basta acessar a edição do código, clicar na opção "Painel de Teste", será exibida uma tela com a opção "Iniciar" e aguardar a execução.

Importante: Essa execução somente efetua o teste de seus comandos, ela não está sendo executada na realidade, ou seja, nenhum comando surtirá efeito em seus recursos.


Quando o teste for concluído sem erro, basta fechar o painel de teste e efetuar a publicação de seu runbook, toda vez que seu runbook for executado será o último código publicado que será utilizado. 

6. Definindo um Agenda para Execução

Agora precisamos definir o(s) dia(s) e horário que será agendando as execuções, basta acessar no menu lateral a opção "Agendas" , as agendas são compartilhadas dentro da sua conta de  automação.

Vamos criar uma agenda que iniciará a VM todo dia útil às 8h

 


Importante: a data Inicia é a primeira execução. Caso esse comando será para sempre, não configurar uma expiração.

Pronto, já temos configura o serviço que inicia, agora só precisamos configurar o serviço que desligará todo dia as 18h com o comando "Stop-AzVM". E assim dessa forma já estaremos economizando 58% do valor da VM por ela estar desligada no horário que ninguém estará utilizando.

Marcelo Goberto de Azevedo

Arquiteto na GFT Brasil

//marcelogoberto.com.br