Basicamente, dois problemas:
- um de iniciar o VPS
- um para desativá-lo
Como iniciar
Primeiro, você precisa instalar o link ec2 cli tools
,
Para começar, você pode criar seu próprio servidor como proxy (localhost). Crie uma página php, python, etc. que você possa chamar. Essas páginas se ligam para abrir uma página de teste, se for timeout (x segundos), você chama o cli ec2 para iniciar a instância específica.
Alternativamente, você pode chamar um script ec2 para iniciar seu VPS assim que seu servidor de desenvolvimento iniciar (ou seja, eu estou fazendo Ruby on Rails, e seria muito fácil apenas chamar um script que inicie o servidor, uma vez que eu comecei meu código de desenvolvimento)
Desligando
Para desligar, eu criaria um cron rodando em cada servidor de desenvolvimento, a cada x minutos (de hora em hora?). Lá você basicamente segue o resultado do log de desenvolvimento e cria um MD5
, contanto que o MD5 mude, você sabe que o servidor está sendo usado. Então, para que isso funcione eu levaria uma boa quantidade de verificação de tempo (ou seja, não a cada minuto). Adicionado um email para você ser notificado quando o desligamento for iniciado.
Assumindo que seu registro de desenvolvimento tenha um timestamp, você deve ser bom.
Exemplo de script de script de desligamento
#!/bin/sh
# /etc/cron.hour/autoshutdown
# Example EC2 auto shutdown script
# Place in your /etc/cron.hourly
LOG_FILE=/path/to/my/development.log
MD5_FILE=/tmp/my.log.md5
[email protected]
echo "Create MD5..."
cur_md5='tail $LOG_FILE | md5'
echo "Read latest MD5..."
if [ -f $MD5_FILE ]; then
last_md5='cat $MD5_FILE'
else
echo "No MD5 found, 1st time use..."
last_md5='no sig. found'
fi
if [ "$cur_md5" = "$last_md5" ]; then
echo "MD5 signatures are identical, nothing changed we can stop the server..."
echo "Server is been shutdown" | mail -s "Server $(hostname) has been shutdown..." $NOTIFY
# shutdown -h now
else
echo "Current MD5 [$cur_md5]"
echo "Last MD5 [$last_md5]"
echo "MD5 changed, we are still using the sever..."
echo "Updating signature..."
echo $cur_md5 > $MD5_FILE
fi
Claro, sem garantias , apenas meus pensamentos; -)