Na última semana escrevi um post aqui no site que apresentava o Azure Automation e que falava sobre as motivações financeiras (redução de custos de infraestrutura) para a utilização do mesmo. Neste mesmo post falei também sobre o processo de autorização (uma espécie de autenticação) requerido pelo Azure para que o Automation consiga modificar o status dos recursos destino e apresentei uma das abordagens possíveis neste contexto: autorização por certificado. Você poderá ler o texto ao qual me refiro seguindo o link abaixo.
Post: Microsoft Azure Automation – conhecendo e utilizando
Este post é a continuação do texto referido acima e portanto, se você não leu (e não possui o conhecimento equivalente), recomendo fortemente que o faça antes de seguir com a leitura deste.
Hoje quero apresentar a automação sendo realizada de fato. Como exemplo, apresentarei o processo de ligar e desligar máquinas virtuais. Optei por esse exemplo por acreditar que talvez seja esta a demanda secundária em termos de automação no Microsoft Azure, entretanto, reitero que vários outros recursos (outros cloud services, web apps, etc.) podem ser igualmente automatizados, ok?
Vamos então a criação do processo.
Trabalhando a automação
Agora que já possuímos nosso certificado criado e enviado para o Microsoft Azure (ver post anterior), podemos seguir com nosso processo de automação. Iniciaremos criando uma conta e na sequência, um novo RunBook para o Automation através do portal antigo do Azure, disponível através do link abaixo.
Portal anterior do Microsoft Azure
Entendendo os conceitos de Contas e Runbooks
A conta de Automation é o elemento primário da estrutura de automação. Todos os seus Runbooks estarão dentro dela. Em uma estrutura de árvore, os Runbooks são todos filhos das contas :-). Você poderá ter quantas contas forem necessárias. Isso é bacana pelo fato de possibilitar a segmentação das automações, por exemplo, por áreas na empresa.
Um Runbook é um container que agrupa funcionalidades para a execução de scripts Power Shell (aliás, é importante mencionar que é preciso conhecer bem Power Shell pra fazer as automações acontecerem). Ele atua como um grande orquestrador de ações com base no que os scripts Power Shell atrelados aos agendamentos, dizem.
Dentro de um Runbook você pode ter n scripts e agendamentos. Você adicionar novos conforme sua necessidade e ainda, referenciar scripts já existentes que façam sentido com um agendamento diferente, por exemplo. Legal, não?
Mãos a obra
Ok! Uma vez dentro do portal, navegue até a opção “Automation”, disponível no menu principal da aplicação (lado esquerdo), conforme ilustra a Figura 1.
Figura 1. Opção “Automation” disponível no portal do Azure
Após isso, no menu inferior do portal, clicar na opção “+ Create”. Na janela que se abre, informe os valores solicitados (Nome da conta e local onde a mesma será criada). Sua janela deverá ser semelhante aquela apresentada pela Figura 2.
Figura 2. Criando uma nova conta de automação
Se tudo correu bem, sua conta recém criada será exibida na grid de contas. Agora precisamos configurar a autenticação (é neste ponto que tanto o certificado quanto o arquivos de autenticação serão utilizados). Para isso, navegue para o interior da conta recém criada e lá dentro, acesse a aba “Assets”, conforme apresenta a Figura 3.
Figura 3. Relação de assets já disponibilizados por padrão
Os assets são artefatos indispensáveis para que as ações de automação possam acontecer. Como a autenticação é um requerimento do Azure Automation pra que consigamos ligar e desligar máquinas virtuais, nosso processo de autenticação tem que ser configurado aqui. Isso é o que faremos na sequência.
Uma vez na aba “Assets”, no menu inferior, clique na aba “+ Add setting”. Uma nova janela se abrirá. Nela, selecione a opção “Add credential”. Novamente uma nova janela se abrirá (esta, de dois passos). Esta nova solicita inicialmente 3 informações: “Credencial type“, “Name” e “Description“. A Figura 4 apresenta como sua janela deverá estar.
Figura 4. Adicionando informações da credencial
O que estamos dizendo para o Azure Automation aqui é: “Hey Azure, vou usar um certificado para meu processo de autenticação cujo nome é {nome-exatamente-igual-ao-que-você-deu-para-o-arquivo-de-autenticação-físico-no-post-anterior}, ok?”. Assim, você pode seguir para a próxima etapa, onde você deverá selecionar seu arquivo de autenticação (*.pfx) e informar a senha (criada no momento em que o .pfx também foi criado), conforme apresenta a Figura 5. É dessa forma que a criptografia é fechada com o certificado criado e já enviado anteriormente para o Azure.
Figura 5. Concluindo o processo de autenticação
Para finalizar este processo de autenticação, precisamos criar variáveis de ambiente que “conversam” com o certificado já adicionado e são lidas pelo Azure Automation. Como faremos nossa autenticação com base nos três parâmetros já fornecidos ao arquivo .pfx no momento de sua criação (conforme apresentado no primeiro post), precisaremos adicionar os apontamentos para as mesmas três variáveis. São elas:
- CertificateName;
- SubscriptionId;
- SubscriptionName;
Para adicionar uma variável, clique na opção “Add setting”, localizada no menu inferior no ambiente dos assets. Na janela que se abrirá, selecione a opção “Add variable”. Uma nova janela será exibida (Figura 6) e nela, você deverá informar o tipo de valor que a variável que está sendo criada receberá + nome da variável + descrição (esta informação é opcional). Para as três variáveis, selecione o tipo “String”. Os nomes são aqueles apresentados pela lista apresentada anteriormente.
Figura 6. Adicionando variáveis de ambiente
Ao final, se tudo deu certo, sua visão de recursos de ambiente deverá estar parecida com aquela apresentada pela Figura 7.
Figura 7. Variáveis de ambiente adicionadas com sucesso
Muito bem. Agora que temos nossa conta preparada com as informações de autenticação, podemos partir para a automação propriamente dita e o primeiro passo neste sentido é a criação dos Runbooks. Coloquei a expressão no plural porque criaremos dois Runbooks:
- DesligarVMs: ele implementará um script que verificará se o dia corrente é dia útil. Se for, mantém ligada. Se não for, desliga. Tudo isso de forma dinâmica com Power Shell.
- LigarVMs: idem ao anterior, entretanto, com a função inversa, como é possível inferir.
Para criar um novo Runbook você deverá selecionar a aba “Runbook” (ao lado de Assets) e na sequencia, no menu inferior, clicar na opção “+ New”. O painel do Azure o levará diretamente para a escolha do tipo de Runbook. Opte pela opção “Quick create“.
Dica: o portal do Azure traz uma galeria com centenas de scripts para Runbooks já pronta. Assim, antes de criar um flow para determinado fim, vale verificar se algo semelhante ou até mesmo idêntico já não se encontra disponível na galeria.
Na jela do “Quick create” preencha as informações solicitadas. São cinco, conforme ilustra a Figura 8.
Figura 8. Criando um novo Runbook
Se tudo correu bem, você deve estar visualizando uma tela como aquela apresentada pela Figura 9. Ela apresenta algumas informações de boas vindas e links úteis para aprender um pouco mais sobre os runbooks.
Figura 9. Tela inicial do ambiente de runbook
Neste primeiro momento, estamos interessados em colocar nosso código PowerShell pra rodar e fazemos isso clicando sobre a aba “Author”. Lá, substitua o conteúdo de exemplo do editor de código por aquele apresentado pela Listagem 1 a seguir.
Listagem 1. Iniciando uma VM apenas em dias comerciais
O código é bem simples, portanto, segue uma explicação rápida:
- Linhas 3 – 11: estamos criando duas variáveis globais obrigatórias. “VMName” e “ServiceName”. Precisamos informar a ele em algum momento qual é a máquina e o cloud service associado que deverá ser ligado. Usaremos estas duas variáveis para armazenar esta informação.
- Linhas 13 – 16: estamos obtendo a data atual e verificando se trata-se de um sábado ou domingo. Se for, não liga (o exit indica o abandono do algoritmo). Se não for, siginifica que é dia útil e portanto a máquina deve ser ligada (o flow simplesmente segue).
- Linhas 18 – 21: recuperamos as informações do ambiente.
- Linhas 23 e 24: fazemos um select nas assinaturas com base nos valores armazenados nas variáveis de ambiente. Se uma assinatura for retornada e ela for igual aquela informada pelo certificado, a autenticação foi realizada com sucesso.
- Linha 26: se o executor chegou até ali, é sinal que tudo está ok e portanto, a máquina é ligada.
Pronto. O automator está pronto para executar seu script. Você pode salvar o mesmo e publicar ou pode testar seu funcionamento imediatamente, clicando na opção “Test”, localizada no menu inferior. Ao clicar nesta opção, uma janela será exibida pedindo para que você informe o “ServiceName” e o nome da máquina “VMName” (lembra das variáveis globais do script?). Informe e clique no botão Ok e você verá se seu script funciona de forma adequada ou não. A Figura 10 ilustra este procedimento.
Figura 10. Testando o funcionamento do script StartVM
Pois bem, agora, para que o Azure possa executar seu script de fato em produção, você precisa salvá-lo e publicá-lo. Você pode fazer isso clicando nas opções equivalentes no menu inferior. Ao fazê-lo, você verá sua tela com o aspecto apresentado pela Figura 11.
Figura 11. Script salvo e publicado
Agora o Azure Automation já pode executar este script a qualquer momento. Só nos resta então um pequeno detalhe: em qual momento? Precisamos configurar o agendamento. Para isso, clique na aba “Schedule”, localizada no menu de contexto do Runbook. No menu inferior, clique na opção “Link” e na sequência, “Link to a new schedule“. Uma janela de três passos será exibida. Informe primeiro um nome e descrição (este campo é opcional) e avance.
Figura 12. Nomeando o agendamento
Na próxima etapa, informe a periodicidade com a qual o script deverá ser executado: “Uma única vez”, “A cada hora” ou “Diariamente” são as opções disponíveis, e na sequencia, data/hora de início. Minha janela ficou da forma que a Figura 13 apresenta. Se você selecionar a opção “Diariamente”, o Azure lhe perguntará sobre o número de vezes ao dia.
Figura 13. Configuração do agendamento de execução do script
Você deve estar se perguntando: mas onde eu informo para o Azure qual máquina eu quero ligar? É justamente aqui, no terceiro passo (veja a Figura 14). Ao avançar para a última etapa, o Azure lhe pergunta sobre o nome da VM e o nome do cloud service.
Outra pergunta que você pode estar se fazendo: Mas como o Azure sabe quantas e quais informações pedir? Na verdade ele não sabe. Você disse pra ele em algum momento. Note, o número de informações solicitadas será sempre dinâmico. Isso porque o Azure lê essa informação do seu script, portanto, qualquer informação necessária para que seu script funcione adequadamente deve ser criada lá para posterior indicação de valor no agendamento. Legal, né?
Figura 14. Informando a máquina e o cloud service a ser ligada
Pronto. Ao clicar em Ok o Azure salvará a informação de agendamento e quando o momento específicado chegar, ele executará a ação do script.
Mas, e o desligar VM?
Como você bem sabe, o que fizemos aqui foi a automação para ligar uma VM. O processo de desligar é rigorosamente o mesmo, resumido nos passos seguintes. Aliás, esta é uma boa chance pra treinar o que você aprendeu nestes dois artigos sobre automação, não?!
- Crie um novo Runbook;
- Adicione o script através da aba “Author”. Pa desligar, utilize o comando “Stop-AzureVM”;
- Teste para verificar que tudo está funcionando;
- Salve e publique o script;
- Linque um novo agendamento, informe os dados necessários e salve;
Com o tempo, na medida em que as execuções dos scripts forem ocorrendo, o Azure vai te mostrando graficamente o que está acontecendo, como é possível conferir através da Figura 15.
Figura 15. Verificando o resultado das automações
Bom pessoal, é isso. Espero que estes dois posts possam ajudar sua empresa a usar melhor os recursos do Azure e o que é melhor, economizando. Se dúvidas surgirem, por favor, entrem em contato através do formulário de contato ou mesmo através dos comentários.
Forte abraço a todos.
Facebook
Twitter
Instagram
LinkedIn
RSS