Openstack se ha convertido en los últimos meses en uno de los proyectos de software de gestión de Infraestructuras como Servicio más populares. Sin embargo, puede ser una bestia difícil de domar. Para sacarle jugo al máximo lo mejor es usar la plataforma a través de sus APIs.
En esta charla veremos las posibilidades de la plataforma usando los APIs específicos de Openstack, y compararemos con los APIs compatibles con Amazon EC2 y Eucalyptus que también ofrece la plataforma.
2. ¿Quién Soy?
Diego Parrilla
Stackops CEO & Founder
diego.parrilla@stackops.com
www.nubeblog.com
twitter.com/nubeblog
www.stackops.com
twitter.com/stackops
Diego Parrilla
diego.parrilla@stackops.com
3. La infraestructura ya no es una ventaja competitiva
La infraestructura ya no es necesaria
Se buscan formas pago por su uso
Las formas de pago deben ser de alta granularidad
Debe ser muy elástica, ¡igual tenemos éxito!
Así aparece la Infraestructura como Servicio
Diego Parrilla
diego.parrilla@stackops.com 3
4. Las empresas empiezan a ‘infectarse’
Tecnologías que usan IaaS y no ‘hierro’
Procesos de gestión adaptadas al IaaS: metodologías
ágiles.
La aplicación prevalece sobre la infraestructura
Ingenieros con perfiles nuevos e ideas diferentes
(Devops)
Diego Parrilla
diego.parrilla@stackops.com 4
5. Software to provision virtual machines on
standard hardware at massive scale
OpenStack Compute
A community creating open source software to
build public and private clouds
Software to reliably store billions of objects
distributed across standard hardware
OpenStack
Object Storage
Diego Parrilla
diego.parrilla@stackops.com
7. Company launched in March 2011 Figures
Total Downloads >22000
Platforms deployed with our distro (15/3/2012) >14000
Clients registered (15/3/2012) >3000
Diego Parrilla
diego.parrilla@stackops.com
9. ¿Qué es un DevOp?
Conjunto de principios, métodos y prácticas para la colaboración e integración entre
desarrolladores y operaciones.
Combinación de ‘developer’ y ‘operations’
Operaciones programadas usando este tipo de plataformas y herramientas.
De operaciones reactivas, a unas más ágiles y automatizadas.
Meta: producir software y/o servicios más rápida y eficientemente.
Diego Parrilla 9
diego.parrilla@stackops.com
10. Diseño de soluciones
Los desarrolladores ganan poder en el diseño de las soluciones.
La aplicación dicta sus propias necesidades de recursos.
Desarrollo ‘pasa el marrón’ a Operaciones.
Operaciones se defiende poniendo barreras. Actitud defensiva.
Para evitarlo el ecosistema de la app debe gestionarse por software.
Diego Parrilla 10
diego.parrilla@stackops.com
11. Mantenimiento automatizado
Aparecen nuevas herramientas que automatizan tareas cotidianas de los
SysAdmins
Herramientas que se programan como si fuera un Framework más:
Chef,
Puppet,
Fabric…
Sistemas que se gestionan como servicios mediante APIS.
Diego Parrilla 11
diego.parrilla@stackops.com
16. Usando el token con Glance (I)
IMAGE_NAME='ttylinux-uec-amd64-12.1_2.6.35-22_1’
tar -zxf ./$IMAGE_NAME.tar.gz -C /tmp/images
RVAL=`glance add -A $AUTH_TOKEN name="ttylinux-kernel" is_public=true container_format=aki
disk_format=aki < /tmp/images/$IMAGE_NAME-vmlinuz*`
KERNEL_ID=`echo $RVAL | cut -d":" -f2 | tr -d " "`
glance add -A $AUTH_TOKEN name="ttylinux" is_public=true container_format=ami disk_format=ami
kernel_id=$KERNEL_ID < /tmp/images/$IMAGE_NAME.img
root@nova-controller:/var/lib/stackops# glance index -A $AUTH_TOKEN
ID Name Disk Format Container Format Size
---------------- ------------------------------ -------------------- -------------------- --------------
10 ttylinux ami ami 25165824
9 ttylinux-kernel aki aki 4404752
root@nova-controller:/var/lib/stackops#
Diego Parrilla
diego.parrilla@stackops.com
17. Usando el token con Glance (II)
curl -H "X-Auth-Token:$AUTH_TOKEN" http://GLANCE_HOST:9292/v1/images
{"images":
[{"name": "ttylinux", "container_format": "ami", "disk_format": "ami", "checksum":
"10047a119149e08fb206eea89832eee0", "id": 10, "size": 25165824},
{"name": "ttylinux-kernel", "container_format": "aki", "disk_format": "aki",
"checksum": "3ed2965d3f8d877a3ee3e061fd648e9a", "id": 9, "size": 4404752}]
}
Diego Parrilla
diego.parrilla@stackops.com
18. EC2 Query API vs Openstack API
Diego Parrilla
diego.parrilla@stackops.com
19. EC2 Query API
Basada en GET y POST + Parámetros
Cada petición debe ir firmada
?Action=DescribeImages
&AWSAccessKeyId=10QMXFEV71ZS32XQFTR2
&SignatureVersion=1
&Timestamp=2006-12-08T07%3A48%3A03Z
&Version=2007-01-03
Message Authentication Code (HMAC) con función hash SHA-1
&Signature=GjH3941IBe6qsgQu%2Bk7FpCJjpnc%3D
Diego Parrilla
diego.parrilla@stackops.com
20. Openstack API
REST
Basada en el API de Rackspace
Extensible:
Quantum
System Usage
?Action=DescribeImages
&AWSAccessKeyId=10QMXFEV71ZS32XQFTR2
&SignatureVersion=1
&Timestamp=2006-12-08T07%3A48%3A03Z
&Version=2007-01-03
Diego Parrilla
diego.parrilla@stackops.com
24. Obtener informacion m1.tiny
Necesitamos el token la referencia a la m1.tiny
curl -i http://10.0.2.15:80/v1.1/1/flavors/1 -H "X-Auth-Token: 999888777666"
{"flavor":
{"rxtx_quota": 0,
"name": "m1.tiny",
"links": [{"href": "http://10.0.2.15/v1.1/1/flavors/1", "rel": "self"},
{"href": "http://10.0.2.15/1/flavors/1", "rel": "bookmark"}],
"ram": 512,
"vcpus": 1,
"rxtx_cap": 0,
"swap": 0,
"disk": 0,
"id": 1}}
Diego Parrilla
diego.parrilla@stackops.com
25. Arrancar una VM m1.tiny con ttylinux
Necesitamos el token, la referencia a la m1.tiny y a la imagen ttylinux
curl -i http://10.0.2.15:80/v1.1/1/servers -X POST -d ' {"server": {"flavorRef":
"1", "name": "Test3", "imageRef": „10"}}' -H "X-Auth-Token: 999888777666" -H
"Accept: application/json" -H "Content-type: application/json"
{"server": {
"status": "BUILD",
"updated": "2012-03-24T01:29:40Z",
"hostId": "",
"user_id": "admin",
"name": "Test3",
"links": [{"href": "http://10.0.2.15/v1.1/1/servers/3", "rel": "self"}, {"href":
"http://10.0.2.15/1/servers/3", "rel": "bookmark"}],
"addresses": {},
"tenant_id": "1",
"image": {"id": “10", "links": [{"href": "http://10.0.2.15/1/images/10", "rel":
"bookmark"}]},
….: {}}}
Diego Parrilla
diego.parrilla@stackops.com
26. Ver el estado del despliegue de la VM
Necesitamos el token y el ID de la VM
curl -i http://10.0.2.15:80/v1.1/1/servers/3 -H "X-Auth-Token: 999888777666"
{"server":
{"status": "ACTIVE",
"updated": "2012-03-24T01:29:48Z",
"hostId": "0efed51f62cbab80576f1d3e4c540a35d5aaa76dab99fe6a2aabf838",
"user_id": "admin",
"name": "Test3",
"links": [{"href": "http://10.0.2.15/v1.1/1/servers/3", "rel": "self"}, {"href": "http:/
/10.0.2.15/1/servers/3", "rel": "bookmark"}],
"addresses": {"service": [{"version": 4, "addr": "10.0.0.4"}]},
"tenant_id": "1",
"image": {"id": “10", "links": [{"href": "http://10.0.2.15/1/images/10", "rel":
"bookmark"}]},
"created": "2012-03-24T01:29:40Z",
"uuid": "c404217a-fccf-41ce-969f-3e442c4e1b92", …
…}}
Diego Parrilla
diego.parrilla@stackops.com
27. Terminar y borrar una VM
Necesitamos el token y el UUID (No el ID) de la VM
curl -i http://10.0.2.15:80/v1.1/1/servers/632b9f58-20f3-4c95-9dca-bbae8c9e02b8 -X
DELETE -H "X-Auth-Token: 999888777666"
HTTP/1.1 204 No Content
Diego Parrilla
diego.parrilla@stackops.com