AzureCLI – Automatizando ligamento e desligamento de VM via Azure
Olá pessoal, quem tem familiaridade com comandos Linux, O Azure CLI proporciona você armazenar e centralizar seus scripts e agendar via CRONTAB.
É bem simples mas muito funcional. Sabemos que o Poweshell é poderoso e utilizar o AzureCLI facilita mais ainda outra maneira de usar e automatizar ambientes.
Um dos comandos que irei realizar é o de desligamento, ligamento e desalocar os recursos.
O comando é bem simples
az vm start – ele liga a maquina virtual
az vm stop – ele desliga a maquina virtual mas não desaloca os recursos
az vm deallocate – ele desliga a maquina e desaloca os recursos da maquina
Então vamos lá.
O ambiente temos 3 maquinas, uma Windows server01 ligada no Grupo001, A linux no Grupo002 desligada, e uma Marketplace Alfresco no grupo Rgalfresco ligada.
Os comandos são simples.
az vm stop -g Grupo001 -n server01, iremos desligar.
az vm start -g Grupo002 -n Server02, iremos ligar.
az vm deallocate -g Grupo002 -n Server02, iremos desalocar a mesma maquina 002 depois de ligar novamente.
Veja o vídeo Abaixo de demonstração
Para agendar o horário para ligar, desligar ou desalocar a maquina use o CRONTAB.
Vamos criar o script bem simples para o cron executar.
vim script_ligar_vm_azure.sh
De o comando chmod a+x script_ligar_vm_azure.sh para ter permissão de execução.
O mesmo você irá fazer para os outros scripts para execução.
Como usar o cron
O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos como vi, vim, emacs ou nano. Também é possível digitar o comando crontab -e para editar o arquivo exclusivo de seu usuário. Neste caso, a edição é feita como se você estivesse usando o vi.
O crontab tem o seguinte formato:
[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]
O preenchimento de cada campo é feito da seguinte maneira:
– Minutos: informe números de 0 a 59;
– Horas: informe números de 0 a 23;
– Dias do mês: informe números de 0 a 31;
– Mês: informe números de 1 a 12;
– Dias da semana: informe números de 0 a 7;
– Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado);
– Comando: a tarefa que deve ser executada.
Repare que a ordem desses valores indica o nome correspondente do campo. Por exemplo, no campo mês, 1 a 12 quer dizer de “janeiro a dezembro”. No caso de dias da semana, 0 a 6 quer dizer de “domingo a sábado”. Note que o número 7 também pode ser usado. Neste caso, assim como o número 0, o 7 equivale ao dia de “domingo”.
No lugar desses valores, você pode informar * (asterisco) para especificar uma execução constante. Por exemplo, se o campo dias do mês conter *, o comando relacionado será executado todos os dias.
Você também pode informar intervalos no preenchimento, separando os números de início e fim através de – (hífen). Por exemplo, se no campo horas for informando 2-5, o comando relacionado será executado às 2, 3, 4 e 5 horas. E se o comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas? Basta informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula.
Vamos ao exemplo:
De o comando crontab -e
Edite para o editor que você goste mais. O meu é o VIM.
Os scripts estão no diretório home pois você não pode executar como root.
Pronto, agendei para 22:30 executar o script de ligamento da maquina.
Lembrando que a máquina virtual já tem o agendamento para desligamento em modo gráfico.
Temos o Automation que você pode utilizar também como ponto central de scripts.
Mas o Azure CLI com o shell também é uma ótima alternativa e familiaridade para quem conhece linux.
Espero que tenham gostado.
Publicado em 6 de novembro de 2017, em Azure, Linux e marcado como Azure, AzureCLI, Linux. Adicione o link aos favoritos. 12 Comentários.
Fabio, boa tarde.
Sabe como faço para alterar o horário? Atualmente esta como UTC, quero mudar para horário de Brasilia.
Obrigado.
CurtirCurtir
A container precisa estar criada no Brasil. Peça para alterar a CLI e storage para Brasil via suporte do Azure. A minha que criei estava virginia.
CurtirCurtir
Boa tarde.
Não ficou tão claro, mas na verdade consegui mudar para Horário do “Brasil” só que não o BRST, apenas ele informa UTC.
CurtirCurtir
Realmente é um CLI mais limitado ao uso de comandos. Pelo menos nos scripts que eu fiz, não precisei de horarios especificos. Espero que tenha ajudado.
CurtirCurtir
Rapaz de o comando la “date”, date –date=’TZ=”America/Sao_Paulo” 14:41 next Thu’
CurtirCurtir
Sim, tinha feito pelo tzselect, mas quando digito o “date” ele retorna com UTC (+2HS) do nosso horário.
CurtirCurtir
É por que o container está nos EUA. Abre um chamado para ver se é possível ter ele no Brasil. Eu não fiz isso. Mas tenta.
CurtirCurtir
Bom dia.
Ao criar ele informa. Que vai ser no WEST Europe. Quando havia criado, ele não tinha as opções de Advanced.
CurtirCurtir
Este é o comando date –help no container no azure é diferente (mais facil)
Foi o comando que eu dei date –date=’TZ=”America/Sao_Paulo” 14:41 next Thu’
CurtirCurtir
Mas o TIME ZONE está no brasil então ele vai respeitar o horário do Brasil. só dar o comando date ele vai mostrar, por que vc não é um root deste container.
CurtirCurtir
Obrigado pelas dicas. Tentei criar o script para ligar a vm com indicou, porém, para usar o terminal informa que não tenho armazenamento montado ( a minha vm esta no ar, com Windows Server). Tentei adquirir o serviço, mas informa que não há na minha localidade (a VM esta no Sul do Brasil) Teria alguma dica para conseguir ligar a vm em determinado horário de uma outra forma?
Novamente obrigado pelas dicas.
CurtirCurtir
Este tópico da propria Microsoft acredito que va te ajudar. https://docs.microsoft.com/pt-br/azure/automation/automation-solution-vm-management
CurtirCurtir