Porque automatizar Power On/Off de recursos que não operam 24/7?
Os recursos na Oracle Cloud Infrastructure como na maioria dos Cloud Providers são faturados por horas de uso, logo quanto maior o tempo de uso maior o custo, mas o recurso provisionado não é cobrado durante o tempo em que permanece desligado.
Caso possua um ambiente não produtivo e sem a necessidade de permanecer ligado 24/7, manter estes recursos desligados durante a madrugada e finais de semanas pode significar uma boa economia no fim do mês.
Se uma empresa que possue ambientes de desenvolvimento e homologação que são utilizados apenas durante o horário comercial. Caso essa mesma empresa mantenha os recursos desligados durante os períodos entre 21:00 e 7:00 e durante todo o fim de semana a economia com estes 2 ambientes pode chegar a 60% após 1 mês
Scripts para Power On/Off
Foram criados scripts em shell com comando do OCI-CLI para realizar o stop e start. Acesse o repositório do GitHub e baixe os scripts para os seguintes recursos.
- Instances
- Instance Pool
- Oracle Analytics Cloud
- Autonomous Database
- DBSystem Database
- Exatada Database
Os scripts podem ser facilmente modificados para outros tipos de recursos na OCI. São necessário dois scripts para cada recurso, sendo um para stop e um para start.
Adicione o seu escopo aos scripts substituindo o OCID do compartment “Parent”. O código foi programado para ler os compartments de primeiro nível “child”, mas não os subcompartments do do “child” ou seja “grandchildren”.
Opções para automação
Com os scripts baixados é preciso definir a estrátegia para automatizar o processo de Power On/Off e são varias as opcões:
- Oracle Visual Builder Studio
- Azure DevOps
- OCI Instance Principal
- Schedule numa VM
Abaixo um passo a passo da configuração do Oracle Visual Builder Studio.
Automatizando Power On/Off com Oracle Visual Builder Studio
VB Studio será utilizado para executar a ação de stop e start dos recursos, caso não tenha o VB Studio configurado siga este tutorial antes de prosseguir.
Os scrits podem ser facilmente configurados para rodar no Azure DevOps caso por algum motivo o VB Studio não seja um opção.
Crie uma Virtual Machine Template
Acesse o VB Studio indo até Platform Services > Developer.
Vá até Virtual Machines Templates > Create Template.
Adicione um nome para o template e em Platform selecione Oracle Linux 7.
Clique em Configure Software e adicione os seguintes software packages OCIcli e Python3.
Crie uma Virtual Machine
Essa será a virtual machine em onde seus scritps serão rodados, essa VM pode ser uma Always Free que não gera custos. A instance será totalmente gerenciada pelo VB Studio.
Vá até Virtual Machines > Create.
Selecione a quantidade de instances, a região, o shape e aponte o template recém criado.
Clique em start para que a instance seja provisionada e aguarde até o status seja running.
Crie um projeto no VB Studio
Vá até Projects > Create.
Dê o nome Power On-Off para o projeto.
Selecione Empty Project e clique em next.
Selecione Markdonw e clique em finish.
Create Git Repository
Vá até Git > Create Repository.
Dê o nome git-power-on-off para Git Repository.
Clique em Add File para adicionar um novo arquivo.
Selecione o nome da pasta que o arquivo será salvo + o nome do arquivo e então arraste o arquivo do script para area de código. Clique em commit e repita isso para todos os outros arquivos.
Create Build
Vá até Build > Create Builds.
Dê um nome para o build e selecione o template que foi configurado anteriomente.
Clique em Add Git.
Selecione o repositório do Git criado anteriomente e clique em save.
Vá até Steps e clique em Add Step e selecione OCIcli.
Preecha com os dados do seu tenancy, utilize o usuário criado durante a configuração do VB Studio ou crie outro com permissões compativéis. Recomendo a utilização de keys sem passphrase, pois obtive muitos erros ao utilizar keys com a passphrase.
Adicione um novo Step. Dessa vez escolha Common Builf Tools > Unix Shell.
Aqui adicione os scripts que serão executados.
Faça o agendamento do desligamento clicando na engrenagem e em seguida em Triggers. Defina o escopo desejado e salve as alterações.
Refaça o processo de criacao de build, mas dessa vez adicione os scripts de start.
Revise as configurações e teste o processo de stop dos recursos clicando em Build Now. Logo em seguida clique em Build Log e verifique se tudo ocorreu bem.
Dessa forma está configurado a rotina de power on/off diariamente.