Skip to content

Instantly share code, notes, and snippets.

@dodopontocom
Last active August 24, 2019 18:39
Show Gist options
  • Save dodopontocom/cad563eb7e9219c712ce7ff9926cf84f to your computer and use it in GitHub Desktop.
Save dodopontocom/cad563eb7e9219c712ce7ff9926cf84f to your computer and use it in GitHub Desktop.

Como agendar desligamento/inicialização das VMs

#Tutorial completo (para VM Windows)

Para fins de economia, quando não é necessário deixar uma VM ligada o tempo todo, existe a possibilidade de agendar desligamento durante as madrugadas e finais de semana por exemplo.

Serviços:

Gcloud Instance Compute
Scheduler
PubSub
Gcloud Functions

Referência: https://cloud.google.com/scheduler/docs/start-and-stop-compute-engine-instances-on-a-schedule

Importante:

Executar todos os comandos abaixo dentro do Cloud Shell ativado no console do GCP
https://console.cloud.google.com (abrir cloud shell)

Tipos possivéis de máquinas: (substituir em "machine-type" no comando abaixo)

n1-standard-1 ---> 1 vCPU, 3.75 GB Memory
n1-standard-2 ---> 2 vCPU, 7.5 GB Memory
n1-standard-4 ---> 4 vCPU, 15 GB Memory
(...)

Tipos das “image-family” para VM Windows:

Passos

1 - criar VM windows: (ref.: https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances)

    --image-project windows-cloud \
    --image-family windows-2016 \
    --machine-type f1-micro \
	--zone us-central1-a \
	--labels=env=dev

2 - Criar os pubsub's que irão ‘triggar’ o stop/start:

gcloud pubsub topics create stop-instance-event

3 - Clonar o repo oficial onde estão os scripts em node:


```gcloud functions deploy startInstancePubSub \
    --trigger-topic start-instance-event \
    --runtime nodejs8
    --trigger-topic stop-instance-event \
    --runtime nodejs8
cd -

#Checar status da máquina:

Criando o Agendador

1 - Ligar de segunda a sexta às 8:00:

    --schedule '0 8 * * 1-5' \
    --topic start-instance-event \
    --message-body '{"zone":"us-central1-a", "label":"env=dev"}' \
    --time-zone 'America/Sao_Paulo'

2 - Desligar de segunda a sexta as 18:30:

    --schedule '30 18 * * 1-5' \
    --topic stop-instance-event \
    --message-body '{"zone":"us-central1-a", "label":"env=dev"}' \
    --time-zone 'America/Sao_Paulo'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment