CharmingJuju

Semana del desarrollador

Miercoles 1 de Febrero del 2012 - Charming Juju - m_3

   1 11:01 < chilicuil> lo que sigue sera una charla por +m_3, sobre juju y las recetas que podemos hacer para
   2 crear servicios a traves de ubuntu
   3 11:02 < chilicuil> esta es una platica enfocada a Ubuntu server
   4 11:02 < chilicuil> desde este ciclo, ubuntu server ha tenido mucha actividad con orchestra y juju,
   5 dos tecnologias utilizadas para levantar servicios en cuestion de minutos
   6 11:03 < chilicuil> comenzare la interpretacion ahora
   7 11:04 < chilicuil> en lugar de concentrarnos en una receta particular, dare ejemplo de varias de ellas,
   8 y de como pueden ser usadas para levantar servicios populares
   9 11:05 < chilicuil> hare un poco trampa, y utilizare una sesion que he preparado para esta sesion, usando
  10 ec2 para ello
  11 11:11 < chilicuil> podran ver los ejemplos (con su navegador o cliente ssh) a traves de
  12 ec2-107-21-156-68.compute-1.amazonaws.com
  13 11:11 < chilicuil> el usuario y contraseña son guest/guest
  14 11:12 < chilicuil> bien, juju es un conjunto de herramientas hechas en ubuntu
  15 11:13 < chilicuil> es un nuevo paradigma para el levantamiento de servicios, donde no solo te concentras
  16 en mantener sincronizadas los archivos de configuracion y de automatizar el proceso, sino que se ven como
  17 una infraestructura de servicios
  18 11:13 < chilicuil> #esto no es completamente cierto, pero ciertamente es el primer esfuerzo en Ubuntu
  19 11:14 < chilicuil> si vemos la administracion como un conjunto de servicios, podremos ver que unos
  20 servicios pueden interactuar con otros
  21 11:14 < chilicuil> por ejemplo, aplicaciones web, con bases de datos, caches, monitores, almacenamiento
  22 de archivos.., etc
  23 11:15 < chilicuil> el punto de juju es mantener ese conjunto de servicios dentro de tu infraestructura
  24 11:16 < chilicuil> estamos hablando de tener los servicios de grandes compañias, en tus propios equipos
  25 11:18 < chilicuil> bien, si se han conectado, ahora veran una lista de servicios
  26 11:18 < chilicuil> eso es lo que el usuario final de juju tiene que ver
  27 11:18 < chilicuil> juju bootstrap
  28 11:18 < chilicuil> juju deploy [options] service
  29 11:19 < chilicuil> juju add-relation servicio1 servicio2
  30 11:19 < chilicuil> juju expose service
  31 11:19 < chilicuil> el ultimo paso, pone el servicio en la red
  32 11:20 < chilicuil> los pasos anteriores son los que se siguen para levantar un servicio
  33 11:20 < chilicuil> la manera en la que juju representa servicios en a trave de charms
  34 11:20 < chilicuil> tenemos charms para muchos servicios, algunos de ellos son mongo, ganglia, mediawiki,
  35 mysql, etc, etc, etc
  36 11:21 < chilicuil> estos charms contienen las mejores practicas de los administradores que han trabajado
  37 con ellas
  38 11:22 < chilicuil> para acceder via ssh, usen $ ssh guest@ec2-107-21-156-68.compute-1.amazonaws.com
  39 #entraran a una consola donde podran ver todo lo que hace m_3, impresionante"!
  40 11:22 < chilicuil> el ejemplo mas dificil en el que puedo pensar ahora es openstack
  41 11:23 < chilicuil> tenemos charms para instalar openstack en servidores locales usando juju
  42 11:23 < chilicuil> sin embargo comenzaremos con servicios mas simples
  43 11:27 < chilicuil> hablaremos sobre la estructura de estos charms, pero a grandes rasgos es importante
  44 saber que pueden combinarse para crear servicios mas complejos
  45 11:29 < chilicuil> los logs del Ubuntu Developer Week estaran disponibles en
  46 wiki.ubuntu.com/UbuntuDeveloperWeek instantes despues de finalizadas las charlas, las de la
  47 interpretacion tambien estara disponible en wiki.ubuntu.com/SemanaDesarrollador
  48 11:29 < chilicuil> los charms pueden escribirse en cualquier lenguaje
  49 11:30 < chilicuil> y la curva de aprendizaje no es muy grande, juju es basicamente un framework de eventos
  50 11:30 < chilicuil> usa agentes y zookeeper para saber que esta pasando con esos agentes
  51 11:31 < chilicuil> justo ahora en la sesion ssh, podemos ver el juju para la configuracion de una wiki
  52 11:32 < chilicuil> juju funciona sobre ec2, hpcloud, openstack, lxc, servidores locales y buena parte
  53 en eucalyptus
  54 11:33 < chilicuil> se puede instalar juju en una sola maquina si asi lo requieren, se adapta a sus recursos
  55 11:33 < chilicuil> como ejemplo, les contare que el otro dia estaba desarrollando una aplicacion para un
  56 nodo de mongo
  57 11:34 < chilicuil> en produccion, tendriamos algo un proxy enfrente, algunas docenas de mongo y otras tantas
  58 de recuperacion
  59 11:34 < chilicuil> mientras que en mi maquina, solo estaba usando una sola instancia de mongo
  60 11:35 < chilicuil> juju es escalable, veremos como en un momento
  61 11:37 < chilicuil> bien, pensemos en la configuracion de algun servicio
  62 11:37 < chilicuil> hay algunas cosas que suelen hacer una vez instalado su SO
  63 11:38 < chilicuil> estas cosas pueden ser muy simples, otras no tanto
  64 11:39 < chilicuil> juju te permite instalar software a traves de los repositorios, pero tambien a traves de 
  65 npm o de gems
  66 11:39 < chilicuil> si tu aplicacion necesita una version especifica de django o de rails que no este en los
  67 repositorios, puedes instalarlo
  68 11:40 < chilicuil> por supuesto que tambien puedes cagarla
  69 11:40 < chilicuil> intentamos hacer que los charms que elaboramos sean seguros
  70 11:41 < chilicuil> que las cosas que descarguemos sean verificadas, que los charms se vean por otros
  71 desarrolladores, que se prueben para ver que no estan rotos
  72 11:42 < chilicuil> basicamente un charm es una lista de eventos, eventos que seran ejecutados cuando
  73 ciertas caracteristicas se cumplan
  74 11:42 < chilicuil> ahora veremos en la sesion ssh un ejemplo de ello
  75 11:43 < chilicuil> para este charm (postgresql), tenemos 'install, start, stop, upgrade-charm'
  76 11:43 < chilicuil> en este caso el charm esta escrito en shell scripting, pero pueden crearse en cualquier
  77 lenguaje
  78 11:43 < chilicuil> lo podrian escribir incluso en clojure ;)
  79 11:44 < chilicuil> solo tienen que asegurarse de que install cree las condiciones necesarias para ejecutar
  80 el resto de instrucciones, start, stop....
  81 11:45 < chilicuil> como habia dicho, cada charm se puede relacionar con otros servicios
  82 11:46 < chilicuil> los servicios con los que se puede relacionar, se definen en los metadatos del charm
  83 11:46 < chilicuil> para el ejemplo de postresql
  84 11:46 < chilicuil> y los que tienen la sesion ssh abierta, se puede ver que se relaciona con:
  85 11:46 < chilicuil> unin-node
  86 11:46 < chilicuil> ysql-oneway-replication
  87 11:47 < chilicuil>     interface: mysql 
  88 11:47 < chilicuil>   slave:        
  89 11:47 < chilicuil>     interface: mysql
  90 11:47 < chilicuil>   cache:        
  91 11:47 < chilicuil>     interface: memcache
  92 11:47 < chilicuil> provides:       
  93 11:47 < chilicuil>   website:      
  94 11:47 < chilicuil>     interface: http
  95 11:47 < chilicuil>   munin:        
  96 11:47 < chilicuil>     interface: munin-node
  97 11:47 < chilicuil> en ese caso se puede relacionar con memcache, http, munin-node, etc
  98 11:48 < chilicuil> #nota del interprete, se me han pasado las relaciones de postresql, las que se
  99 mostraron fueron las de mysql
 100 11:48 < chilicuil> por ejemplo, en el caso de mysql y postresql se puede ver que ofrecen el servicio db
 101 11:49 < chilicuil> otros servicios como mediawiki, pueden consumir este recurso
 102 11:49 < chilicuil> juju utiliza estas definiciones para combinar servicios
 103 11:49 < chilicuil> y cuando se combinan, se disparan eventos, estos eventos pueden ser configurados para
 104 hacer lo que ustedes quieren
 105 11:50 < chilicuil> cada vez que se crea un servicio, juju llama a las funciones "install" y "start"
 106 del respectivo charm
 107 11:51 < chilicuil> una vez que tenemos varios servicios usamos
 108 11:51 < chilicuil> $ juju add-relation mysql mediawiki y es donde la magia comienza
 109 11:51 < chilicuil> bueno, de hecho no es magia, juju corre los eventos que corresponden y pueden pasar
 110 cosas sorprendentes
 111 11:52 < chilicuil> nos podemos poner a pensar en la cantidad de cosas que necesitamos para levantar un servicio
 112 11:53 < chilicuil> juju separa eso en las cosas que se pueden hacer en la instalacion, cosas basicas y
 113 pasos adicionales para relacionarlos con otros servicios
 114 11:53 < chilicuil> asi, podemos aprender de una forma a instalar mediawiki o mysql
 115 11:53 < chilicuil> solo eso
 116 11:54 < chilicuil> y despues _relacionarlas_!, por ejemplo puedo crear una base de datos
 117 11:54 < chilicuil> y despues describir la manera en la que alguna otra aplicacion puede relacionarse con ella
 118 11:54 < chilicuil> no necesita saber mas!
 119 11:54 < chilicuil> uno puede usar la misma base de datos para instalar mediawiki, que para instalar wordpress
 120 11:55 < chilicuil> podemos tener instrucciones como 'create_database()', que crean una base de datos en
 121 el respectivo servicio y wordpress no tiene porque saber si esta creando esa base de datos en mysql o en pgsql
 122 11:56 < chilicuil> para esto establecemos una relacion con "relation-set"
 123 11:57 < chilicuil> y "relation-get"
 124 11:58 < chilicuil> para obtener mas informacion sobre los charms, pueden entrar a
 125 https://juju.ubuntu.com/Charms
 126 11:58 < chilicuil> tambien pueden descargarlos si instalan $  charm-tools
 127 11:58 < chilicuil> y despues usan $  charm getall algun/directorio/oneiric para que se descarguen en ese
 128 directorio
 129 11:59 < chilicuil> rm_ se pregunta si relation-set y relation-get son visibles desde la definicion de
 130 los hooks, es decir si se agregan al $PATH
 131 12:00 < chilicuil> m_3 ha dicho que si, y tambien se exportan juju-log, open-port, config-get..., todos
 132 estan disponibles durante la ejecucion de los hooks
 133 12:00 < chilicuil> eso es todo por esta sesion

SemanaDesarrollador/OneiricLogs/CharmingJuju (last edited 2012-02-02 07:03:24 by javier-lopez)