quinta-feira, 17 de outubro de 2013

VirtualBox - Iniciando VMs automaticamente no CentOS/RHEL sem precisar de X rodando

 
   Como estava sem muitas ideias e precisava fazer isso funcionar, segue um 'service' do CentOS/RHEL que faz VMs iniciarem e pararem(salvar status) sem tu precisares do X Window aberto.


  IMPORTANTE: O array 'vms' é responsável pelas VMs que queres gerenciar, se tiver mais de 1, adicione-as no array e pronto.


#!/bin/sh
#
# chkconfig: - 99 99
# description: Starts and stops VMs
#       #
# pidfile: /var/run/vbox-vms.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 1

vms=( "CC-Linux-testvm" )

start() {
        kind="VMs"
        numvms=${#vms[*]}
        count=0

echo -n $"Starting $kind services:"

       while [ $count -lt $numvms ]
        do
/usr/bin/VBoxHeadless -startvm ${vms[$i]} >> /var/log/vbox-jobs/${vms[$i]}.log 2>&1 &
                RETVAL=$(($RETVAL + $?))
                (( count=count+1 ))
        done

echo " "

        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/vbox-vms || RETVAL=1
        return $RETVAL

}

stop() {
        echo
kind="VMs"
numvms=${#vms[*]}
count=0

echo -n $"Shutting down $kind services: "

while [ $count -lt $numvms ]
do
/usr/bin/vboxmanage controlvm ${vms[$i]} savestate
                RETVAL=$(($RETVAL + $?))
(( count=count+1 ))
done

        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/vbox-vms
        echo ""
        return $RETVAL

}

restart() {
stop
start
}

case "$1" in
  start)
  start
;;
  stop)
  stop
;;
  restart)
  restart
;;
  *)
echo $"Usage: $0 {start|stop|restart}"
exit 2
esac

exit $?

terça-feira, 8 de outubro de 2013

AWS - Desligando/Ligando instâncias na Amazon

Segue um shell safado para desligar instâncias na Amazon, depois só tens que ajustar os IDs das instâncias que queres desligar ou ligar e colocar no crontab de um servidor que gerenciará essa operação.


 IMPORTANTE: 

 1 - Se configurar isso em uma instância da Amazon, garanta(seu animal), que uma das instâncias desligadas NÃO SEJA a que gerencia o processo;
2 - Se trabalhares com regiões distintas deverás fazer condições no loop;
3 - Precisará o pacote da AWS de gerenciamento de cloud;
4 - Esqueci.

Para ligar:

#!/bin/bash

# Description: Program to start AWS instances

# --- Props vars --- #

# System
EC2_HOME=/opt/aws/apitools/ec2
JAVA_HOME=/usr/lib/jvm/jre
export EC2_HOME JAVA_HOME

# Rest vars
x=0

# Instances
instances=( "i-f32131" "i-0fc2435" "i-33213312" "i-f535324649" "i-98d74324329" )

# Keys AWS
awsaccesskey="1234567890ABC"
awssecretkey="1234315154364213357389460345ABC"


# Program

echo "|INIT Agent|" ; /bin/date

while [ $x != ${#instances[@]} ]

        do

                echo "Start instance ${instances[$x]} ..."

                if [ ${instances[$x]} == "i-0fc2435" ] || [ ${instances[$x]} == "i-33213312" ] ; then

   # DC São Paulo
                        /opt/aws/bin/ec2-start-instances -O ${awsaccesskey} -W ${awssecretkey} --region=sa-east-1 ${instances[$x]}

                fi

  # DC Virginia
                /opt/aws/bin/ec2-start-instances -O ${awsaccesskey} -W ${awssecretkey} ${instances[$x]}

                let "x = x +1"

done

echo "|FINISH Agent|" ; /bin/date




Para desligar:

#!/bin/bash

# Description: Program to stop AWS instances

# --- Props vars --- #

# System
EC2_HOME=/opt/aws/apitools/ec2
JAVA_HOME=/usr/lib/jvm/jre
export EC2_HOME JAVA_HOME

# Rest vars
x=0

# Instances
instances=( "i-f32131" "i-0fc2435" "i-33213312" "i-f535324649" "i-98d74324329" )

# Keys AWS
awsaccesskey="1234567890ABC"
awssecretkey="1234315154364213357389460345ABC"


# Program

echo "|INIT Agent|" ; /bin/date

while [ $x != ${#instances[@]} ]

        do

                echo "Stop instance ${instances[$x]} ..."

                if [ ${instances[$x]} == "i-0fc2435" ] || [ ${instances[$x]} == "i-33213312" ] ; then

   # DC São Paulo
                        /opt/aws/bin/ec2-stop-instances -O ${awsaccesskey} -W ${awssecretkey} --region=sa-east-1 ${instances[$x]}

                fi

  # DC Virginia
                /opt/aws/bin/ec2-stop-instances -O ${awsaccesskey} -W ${awssecretkey} ${instances[$x]}

                let "x = x +1"

done

echo "|FINISH Agent|" ; /bin/date