Si tenemos un minicloud con OVH, podemos gestionar las instancias (máquinas vituales) con un script creado por Dominique Gallot. El script utiliza la API SOAP de OVH, de tal manera que permite obtener información sobre las instancias, arrancarlas y pararlas desde el terminal, sin tener que hacerlo desde el panel de administración.

En la página de OVH tienen el script ovhclud, para gestionar la nube (Public Cloud), pero parece que todavía no soporta las instancias de minicloud.

Instalación

Para descargar el script de la página de Gallot:

bash $ wget -q http://svn.gallot.be/blog/ovh-cloud-api/ovh.pm $ wget -q http://svn.gallot.be/blog/ovh-cloud-api/ovh.pl $ chmod a+x ovh.pl

El script utiliza la librería libsoap-lite-perl, por lo que deberá estar instalada en el sistema.

Acciones

Para obtener un listado de los servicios que tenemos:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a listservice Services name : ab12345-cloud0 title : Cloud zone : ab1c2.project.ovh.net

Para listar las instancias:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -q -a listvm cloud1 12345 running 211.58.125.116

Para listar una instancia concreta:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -q -a listvm -s cloud1 cloud1 12345 running 211.58.125.116

En este caso, hay una instancia encendida. Si queremos pararla sólo tenemos que especifica el nombre de la misma:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a stopvm -m cloud1

Podemos comprobar que está parada:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a listvm name : cloud1 id : 12345 state : stopped ip : ipDns :

Para arrancar la instancia también debemos especificar el nombre:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a startvm -m cloud1

Si acto seguido comprobamos la instancia, vemos que ya tiene asignada una IP (distinta a la anterior), aunque está marcada como stopped:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a listvm name : cloud1 id : 12345 state : stopped ip : 136.125.58.211 ipDns : mc-136-125-58-211.ovh.net

Transcurrido el tiempo que la instancia tarda en arrancar, ya queda marcada como encendida:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a listvm name : cloud1 id : 12345 state : running ip : 136.125.58.211 ipDns : mc-136-125-58-211.ovh.net

También podemos reiniciarla:

bash $ ./ovh.pl -u ab12345-ovh -p mypassword -a rebootvm

Si queremos seguir el intercambios de mensajes SOAP podemos añadir el argumento -t.

Parar una instancia proporcionando su URL o su IP

Teniendo esto en cuenta, el siguiente script stop-cloud-url.sh detiene la instancia dada su URL:

```bash

!/bin/bash -

USERNAME=ab12345-ovh PASSWORD=mypassword DOMAIN="\(1" IP=\)(host "\(DOMAIN" | awk '{print $NF}') VMNAME=\)(ovh.pl -u $USERNAME -p $PASSWORD -q -a listvm | grep $IP | awk '{print $1}') ovh.pl -u $USERNAME -p $PASSWORD -a stopvm -m $VMNAME ```

Si, en lugar de un dominio, tenemos su IP, podemos detener la instancia usando el script stop-cloud-ip.sh:

```bash

!/bin/bash -

USERNAME=ab12345-ovh PASSWORD=mypassword IP="\(1" VMNAME=\)(ovh.pl -u $USERNAME -p $PASSWORD -q -a listvm | grep $IP | awk '{print $1}') ovh.pl -u $USERNAME -p $PASSWORD -a stopvm -m $VMNAME ```

Can’t locate ovh.pm in @INC

El script ovh.pl hace uso del paquete ovh.pm. Si no ejecutamos ovh.pl desde el mismo directorio en el que está ovh.pm se quejará de que no lo encuentra. Para solucionarlo, podemos copiar el paquete a una ruta incluido en el @INC (más o menos como el CLASSPATH de Java o el PYTHONPATH de Python):

bash $ perl -e 'print "@INC";' /etc/perl /usr/local/lib/perl/5.12.4 /usr/local/share/perl/5.12.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.12 /usr/share/perl/5.12 /usr/local/lib/site_perl .

También podemos incluir la siguiente directiva, en ovh.pl, para que incluya el directorio donde se encuentra ovh.pm:

bash use lib '/home/myuser/modules';

Programar el encendido o apagado de una instancia

Programar el encendido o apagado de la instancia se vuelve muy sencillo.

Si queremos programar un encendido o apagado a una hora concreta, o dentro de un tiempo determinado:

bash $ at 08:00 $ at midnight $ at noon $ at now $ at now + 5 minutes $ at midnight + 2 weeks

Después, introducimos la ruta del script y terminamos con ^D (control+D).

Si queremos que sea algo periódico, por ejemplo, de lunes a viernes de 7am a 5pm, utilizaremos el cron:

```bash $ crontab -e

m h d mon dow(0=sunday)

0 7 * 1-5 /path/to/start-cloud.sh 0 17 * 1-5 /path/to/stop-cloud-url.sh sub.domain.com ```


Entradas relacionadas


Published

Category

admin

Tags

Contacto