Crea tu propia nube con Rackspace Cloud | Braintive
Stitched Panorama

Crea tu propia nube con Rackspace Cloud

Mucho cambió en internet desde que se inventó el concepto de “la nube”. Pero este cambio no fué fuerte sólo para el usuario final sino también para las empresas que vieron una posibilidad de reducir sus costos de infraestructura y de poder ser más flexibles para escalar bajo demanda casi inmediatamente.

Todavía existen muchos preconceptos y por un lado nos encontramos con gente que no quiere creer que estas soluciones de colocation “virtual” son el futuro porque se les termina el negocio que tienen actualmente, por otro lado encontramos los que todavía no confían porque realmente ir por una de estas soluciones es delegar mucho poder a un tercero y por otro lado nos encontramos con miles de empresas que deciden comenzar sus negocios o migrar el actual poniendo sus servidores en nubes virtuales. Un ejemplo de este último grupo son: Instagram, SAP, Nasdaq, Socialvibe, Animoto, Ask.fm, Autodesk, HootSuite, Reddit, Ubisoft, Amazon, Foursquare y la lista es interminable.

Una de las empresas que se dedica a ofrecer el servicio de Cloud computing es Rackspace, y nos ofrece una API sencilla de utilizar para crear imágenes, servidores, modificar servidores ya creados, etc.

Es importante entender que este tipo de servicios se cobra por hora de uso, eso significa que si no creaste ningún servidor, no se te cobrará por nada. En cuanto crees un servidor se comenzará a contar las horas de vida de ese servidor y al final del mes se aplicará la tarifa correspondiente al tipo de servidor que creaste. Mientras más potencia tenga el servidor que creaste, más altas serán las tarifas que se aplican por lo que es importante (aprovechando las ventajas de estos servicios) empezar de a poco e ir subiendo cuando sea necesario.

En este post vamos a ver de qué manera podemos realizar las operaciones más básicas para poder armar nuestra nube y escalar fácilmente cuando sea necesario. Utilizaremos principalmente curl para realizar las llamadas pero esto puede realizarse desde cualquier lenguaje de programación, con la ventaja de que podremos automatizar estas llamadas en base a la lógica que creamos conveniente para nuestra nube.

Identificarse con Rackspace Cloud

Antes de realizar cualquier operación es necesario identificarse con la API de Rackspace, para ello es necesario tener nuestro usuario (username) y apikey. Esta información la obtendremos desde el panel de administración de Rackspace Cloud.

Una vez que tenemos esos datos, realizamos la llamada necesaria para obtener las credenciales con las que realizaremos el resto de las operaciones:

curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X 'POST' \
      -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<USERNAME>", "apiKey":"<APIKEY>"]}' \
      -H "Content-Type: application/json" | python -m json.tool

Donde <USERNAME> y <APIKEY> debe reemplazarse por tus datos.

El resultado de esta llamada será un JSON el cual nos dará dos datos importantes que tenemos que anotar: el número de cuenta y el Token. Estos dos datos serán las credenciales a utilizar en el resto de las operaciones. Por lo tanto busca estos datos de la siguiente manera:

Account = serviceCatalog -> endpoints -> tenantId

Token = token -> id

 

Luego para nuestra conveniencia mantendremos en variables de nuestra sesión estos datos:

export account=”<Account>” 

export token=”<Token>”

Listar Imágenes

Ahora que ya estamos identificados lo primero que haremos es buscar una imagen que se adapte a nuestra necesidad. Supongamos que nos gusta Red Hat pero no queremos pagar el extra por la licencia de uso, asique vamos a buscar a Centos en su versión 6.3

curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/images/detail \
 -H "X-Auth-Token: $token" | python -m json.tool

Nuevamente el resultado estará en formato JSON, el dato que nos interesará es el ID de la imagen de nombre CentOS 6.3. Buscamos el tag name:

“name”: “CentOS 6.3″

y obtenemos el ID que en este caso es c195ef3b-9195-4474-b6f7-16e5bd86acd0

Ya estamos un paso más cerca de crear nuestro primer servidor en la nube.

Listar Flavors (RAM y procesador)

Una vez que tenemos decidida la imagen con su sistema operativo, nos falta definir qué poder tendrá nuestro servidor, para eso listaremos los “Flavors” y buscaremos para empezar 4gb de RAM.

curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/flavors \
  -H "X-Auth-Token: $token" | python -m json.tool

El que nos interesa entonces será el ID 5 que nos proveerá de 4gb de RAM.

Crear Server

Ya tenemos el ID de la imagen y tenemos el ID del flavor, lo único que nos queda ahora es combinar ambos y crear nuestro servidor.

Primero crearemos un archivo con la configuración deseada:

Crear archivo server_build.json

{

    "server" : {

        "name" : "<MIPRIMERSERVER>",

        "imageRef" : "c195ef3b-9195-4474-b6f7-16e5bd86acd0",

        "flavorRef" : "5",

        "metadata" : {

            "My Server Name" : "MI PRIMER SERVER"

        }

    }

}

Donde ImageRef es el ID de la imagen del CentOS 6.3 y flavorRef el ID para crear el servidor con 4gb de RAM.

 

Luego realizamos la llamada pasando el archivo como parámetro para enviar la configuración deseada:

curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/servers \
-X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: $token" \
-H "X-Auth-Project-Id: test-project" \
-T server_build.json | python -m json.tool

 

El server comenzará a crearse y obtendremos dos datos muy importantes: la clave de root y el id del servidor

Clave de root = server -> adminPass

ID del servidor = server -> id

Información del servidor

El servidor estará creándose y esto llevará un tiempo. Pero cómo sabemos cuándo estará listo para usar?  Cuál es la IP del servidor para poder conectar?

curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/servers/<ID del servidor> \
  -H "X-Auth-Token: $token" | python -m json.tool

Veremos lo siguiente:

“name”: “<MIPRIMERSERVER>”,
“progress”: 17,
“status”: “BUILD”

Cuando el servidor esté completamente creado, ejecutando la misma llamada veremos:

“progress”: 100,
“status”: “ACTIVE”,

En addresses -> public -> addr obtendrás la IP pública para conectar al servidor

Borrar servidor

En caso de que te hayas equivocado o no necesites más este servidor, puedes eliminarlo fácilmente con esta llamada:

curl -i https://dfw.servers.api.rackspacecloud.com/v2/$account/servers/<ID del servidor> \
  -X DELETE    -H "X-Auth-Token: $token"

Conclusión

Estos son las llamadas básicas para que puedas administrar tus servidores en Rackspace Cloud, hay muchas más llamadas como por ejemplo para aumentar la potencia de tu servidor y crear servidores en base a imágenes de otro servidor que hayas creado.

Como hemos visto, usando un poco de imaginación podríamos crear un sistema de escalabilidad automática para nuestra aplicación en la nube en base a las necesidades del momento. Esta es desde mi punto de vista una de las más grandes ventajas de estos nuevos servicios de virtualización.

 

Sin comentarios

Escribir respuesta


+ 5 = 7

© 2014 Braintive S.A. Todos los derechos reservados.
Seguir

Recibe cada nueva entrada en tu correo electrónico

Unete a otros seguidores: