Cloud Computing

30 jul, 2018

Automatizando tarefas com Azure Automation

Publicidade

Quando estamos trabalhando em um cenário de Cloud Computing, às vezes é necessário executar tarefas frequentes e demoradas, e até mesmo tarefas que estão propensas a erros. Com essa onda da “Nuvem”, podemos dar mais foco para o nosso negócio (algo que sempre faço questão de comentar) deixando as atividades auxiliares e de rotina como tarefas secundárias, onde podemos trabalhar com soluções de terceiros no formato PaaS ou SaaS.

Outro ponto bastante importante que podemos abordar aqui é a utilização das tarefas automatizadas do Azure para um cenário de DevOps onde podemos automatizar algumas rotinas do dia a dia. Um exemplo básico seria a replicação de bases de dados entre Produção e Testes dentro do Microsoft Azure.

As tarefas automatizadas do Azure fornecem serviços de configuração e automação baseado em nuvem, no qual fornecem gerenciamento consistente entre ambientes Cloud e OnPremise (Local). Entre os recursos oferecidos, posso citar alguns abaixo. Não entrarei em detalhes sobre cada um neste momento, pois o foco deste artigo é mostrar de forma simples e rápida a replicação de uma base de dados com o SQL Azure.

  • Automação de Processos
  • Gerenciamento de Configuração
  • Gerenciamento de Atualização
  • Compartilhamento de Recursos

Implementando a solução

O primeiro passo para iniciar nossa atividade é acessar o Portal do Azure. Caso você ainda não tenha uma conta, você pode criá-la acessando este link.

Agora vamos criar um novo recurso chamado Automation, como podem ver na imagem abaixo.

Em seguida, entraremos com os dados necessários para a criação do nosso recurso.

  • Nome do seu recurso
  • Assinatura em que o recurso estará associado
  • Grupo de recurso
  • Local onde o recurso será provisionado
  • Neste passo, quando deixamos a opção marcada como “Sim“, uma conta de execução será criada automaticamente para se utilizar dentro das nossas rotinas

Com o nosso recurso provisionado, começaremos a configurar o nosso Run Book ou Processo Automatizado.

  • Inicie o procedimento clicando em “Criar novo runbook”
  • Entre com o nome do seu Runbook
  • Selecione o tipo de Runbook que deseja trabalhar, lembrando que neste ponto temos três opções para trabalhar com o nosso Runbook, Powershell, Python e em formato Gráfico
Painel de edição do script do Runbook

Na imagem que vocês podem ver acima, temos o painel principal onde iremos editar o nosso Runbook. Temos também na barra lateral alguns atalhos rápido para utilizarmos em nossa rotina como CMDLETS (rotinas pré configuradas), RUNBOOKS (acesso a outros runbooks) e ASSETS (conjunto de recursos dentro do contexto do Azure Automation como variáveis, conexões, certificados, etc).

No painel identificado pelo número 4, incluiremos o nosso código. No caso, PowerShell, onde iremos conectar dentro da assinatura do Azure e exibir todos os recursos que temos provisionado.

<#
    .DESCRIPTION
        An example runbook which gets all the ARM resources using the Run As Account (Service Principal)
    .NOTES
        AUTHOR: Azure Automation Team
        LASTEDIT: Mar 14, 2016
#>

$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         

    "Logging in to Azure..."
    Add-AzureRmAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}

#Get all ARM resources from all resource groups
$ResourceGroups = Get-AzureRmResourceGroup 

foreach ($ResourceGroup in $ResourceGroups)
{    
    Write-Output ("Showing resources in resource group " + $ResourceGroup.ResourceGroupName)
    $Resources = Find-AzureRmResource -ResourceGroupNameContains $ResourceGroup.ResourceGroupName | Select ResourceName, ResourceType
    ForEach ($Resource in $Resources)
    {
        Write-Output ($Resource.ResourceName + " of type " +  $Resource.ResourceType)
    }
    Write-Output ("")
}

Após efetuar todos os passos acima, podemos utilizar o Painel de Testes para efetuarmos os testes necessários ou Publicar de vez o nosso Runbook. Lembrando que para executar o Runbook de forma definitiva, será necessário Publicar o mesmo. Caso contrário, você não terá acesso aos botões de execução ou agendamento.

Como este artigo é somente para fins de exemplificação, utilizamos uma rotina simples. Porém, vale lembrar que podemos ir além com todo o poder que o Powershell nos oferece. Podemos então usar a nossa criatividade e tentar trazer o Azure Automation para dentro do nosso dia a dia em vários cenários como, por exemplo, em um cenário de DevOps, onde podemos automatizar a replicação de base de dados do Azure SQL entre ambientes de Produção, Qualidade e Testes.

Um outro detalhe muito importante e que pode nos ajudar bastante, é utilizar o Azure Automation em conjunto com os Jobs, onde podemos agendar a execução dos nossos Runbooks afim de deixar nossas tarefas mais independentes.

Bom, pessoal, por hoje é só. Espero ter ajudado a todos, e se tiverem alguma dúvida, deixe o seu comentário logo abaixo!

Referências