StopStart VMs (Azure/AWS) via Script Shell

Quando começamos no mundo Cloud uma das tarefas, além de monitoramento de servidores, aplicações, memória, cpu, temos uma nova tarefa, que no final das contas afeta o nosso bolso ou o bolso do cliente.

Trata-se de automações para redução de custos Cloud.

São muitas as opções, são vários os caminhos, o que vou mostrar aqui é um exemplo básico de como iniciar estas automações.

O meio mais prático de iniciar esta redução é automatização de tempo de máquina ativa. Por exemplo, digamos que a empresa é pequena, que seu horário de expediente é de segunda à sexta-feira das 8h às 18h, sendo assim, não há necessidade do servidor ERP, que está na nuvem, ficar ligado durante dias da semana durante a madrugada, finais de semana e feriados.

Claro, isto depende do seu bom senso e análise dos intervalos de horas ou dias da semana que este procedimento pode ser efetuado.

COMO FAZER?

As próprias plataformas, Azure e AWS, possuem suas ferramentas de automações, que funcionam perfeitamente. Requer um pouco mais de leitura e testes.

Para quem já está acostumado com automações via Linux, utilizando shell scripts, existe uma forma de fazer esta automação via cliente destas duas plataformas de modo simples!

SERVIDOR DE AUTOMAÇÃO

Para centralizar estas automações, particularmente prefiro manter um servidor virtual na plataforma selecionada. Geralmente eu crio um servidor com o mínimo possível de recursos, tal como 1vcpu/1gb memória, com ubuntu ou CentOS, onde armazeno estes scripts.

AMAZON AWS

Na plataforma AWS, algumas coisas são necessárias antes de iniciar com os scripts propriamente ditos.

Primeiramente, criamos um usuário no IAM, com direitos aos recursos do EC2.

Não vou me ater a esta parte de criação, mas a documentação da AWS é rica em conteúdo e é onde recorro quando uma dúvida surge.

Dica citada pela própria AWS ao finalizar a criação do usuário:

Esta é a única oportunidade de visualizar ou fazer download das chaves de acesso secretas, e você deve fornecer essas informações aos usuários para que eles possam usar a AWS API. Salve a ID de chave de acesso e a chave de acesso secreta do usuário em um local seguro e protegido. Você não terá acesso às chaves secretas novamente depois dessa etapa.

Link: Criando Usuário AWS

CRIANDO SERVIDOR DE AUTOMAÇÃO

Para criar um novo servidor virtual que será o seu servidor de automação, caso ainda não saiba, segue abaixo link para criação de instância EC2 na AWS:

Link: Criar Instância EC2

Após o passo anterior, com suas credenciais salvas e o novo usuários com direitos aos grupos de permissão de EC2 e a criação do seu servidor de automação efetuado, será necessário acessar o seu servidor, via SSH, para configuração das credenciais do usuário que terá direito as automações EC2:

Antes de criar o script, adote o ID da sua instância ou instâncias, será necessário no script. Feito isto, crie o script “stop-ec2.sh“, com seu editor de preferência ou diretamente no seu servidor de automação com as seguintes linhas mágicas abaixo:

Caso tenha mais instancia, utilize o exemplo abaixo:

A saída deste comando será um arquivo JSON, que será executado na AWS desligando o servidor ou servidores, conforme script.

Para agendar este script e executar conforme for necessário, utilize o agendamento cron do linux para ativar este script

Para executar o START, basta copiar o mesmo script, modificando a linha stop-instances por start-instances.

Implantado este procedimento, aguarde 30 dias para ver o resultado do seu Billing!!

MICROSOFT AZURE

Antes de iniciar a criação do servidor de automação no Azure, também faz-se necessário a criação de um usuário no AD Azure, com direitos as Máquinas virtuais em seus grupos de recursos.

*Lembrando que o usuário deve estar com permissão nos grupos de recursos onde você deseja executar o stop/start das máquinas.

*Caso não use o acesso via chaves SSH neste seu servidor, lembre-se de configurar o acesso no NSG somente com origem do seu IP a porta 22, SSH.

No link abaixo, segue o procedimento para criação de máquina virtual no Azure

Link: Criar Servidor Virtual Azure

Com servidor Ubuntu ou CentOS criado, logue via SSH, para instalar o cliente do azure no linux. Neste exemplo, configurei em um Ubuntu Server conforme este link da documentação

Basicamente, executar o comando:

“sudo curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash”

Feito isto, com seu editor de preferência ou direto no seu servidor de automação, crie um script “stop-servidor.sh” com o conteúdo abaixo:

Se for mais de uma máquina:

Para agendar este script e executar conforme for necessário, utilize o agendamento cron do linux para ativar este script

Para executar o START, basta copiar o mesmo script, modificando a linha vm stop por vm start

Nada de complicado! Apenas se atentar ao Resource Group e o nome das máquinas virtuais.

CONCLUSÃO

Para você de infra que sempre esteve acostumado com seus scripts shells, pode ter um leque de opções com automações utilizando os clients da AWS e AZURE. Criar máquinas, modificar, remover, são inúmeras opções básicas que podem ser feitas sem a necessidade de acessar o console WEB.

Os exemplos aqui são básicos, apenas para aguçar quem já conhece e incentivar a utilização de quem quer utilizar.

Espero que tenham curtido! Caso este artigo tenha um bom aproveitamento, passarei um próximo artigo com opções de drecrease e increase de máquinas virtuais em determinadas horas do dia, para máquina que não são tão utilizadas de madrugada, mas não podem ser desligadas.

Forte abraço!

Thiago