Entradas etiquetadas como admin

¿Cómo planteo el módulo de Implantación de Aplicaciones Web?


Este curso voy a impartir por primera vez el módulo profesional “Implantación de Aplicaciones Web” del segundo curso del Ciclo Formativo de Grado Superior de Administración de Sistemas Informáticos en Red (CFGS de ASIR). Creo que puede ser un módulo profesional muy interesante y útil para los alumnos, pero creo que me falta bagaje para orientarlo adecuadamente, por lo que ando estos días dándole vueltas a la forma de hacerlo. Expongo aquí algunas temáticas que me gustaría tratar en clase o que me rondan la cabeza, para ir poco a poco hilando y concretando los aspectos y temas a tratar. Lo hago aquí de forma pública como el que habla en voz alta, por si tuviera la suerte que algún lector más avezado en estos temas tenga a bien opinar por aquí. A todos los que lo hagan, gracias de antemano.

Leer el resto de esta entrada »

, ,

5 comentarios

¿Qué es eso de OpenStack y por qué debería conocerlo?


Artículo original escrito en OpenWebinars.net

OpenStack es una plataforma cloud computing de software libre que en tan solo tres años de desarrollo se ha convertido en una de las principales opciones para implementar un cloud de IaaS público o privado.

Cloud Computing

El término cloud computing es un término bastante amplio y en algunas ocasiones confuso, pero está de moda porque suena bien y ahora mismo cualquier producto nuevo que salga al mercado suele llevar la coletilla “… cloud”, se trate o no de un producto propiamente de cloud computing. Es por ello por lo que comenzamos esta entrada enunciando las características esenciales del cloud computing según la NIST:

  • Servicio disponible de forma automática y a demanda: Un usuario puede comenzar a utilizar un recurso de cloud (almacenamiento, una instancia, etc.) sin ninguna intervención por parte de un operador de la empresa que presta el servicio.
  • Acceso a través de la red: Los recursos están disponibles a través de la red (Internet o otro tipo de red pública o privada), mediante mecanismos estandarizados que permitan el uso de clientes diversos, desde teléfonos a grandes ordenadores.
  • Los recursos se agrupan en pools en un modelo multi-tenancy. Los recursos son compartidos en general por múltiples clientes, que pueden disponer de ellos a demanda y a los que se les debe garantizar aislamiento y seguridad, a pesar de estar haciendo uso de recursos compartidos.
  • Elasticidad: Es un concepto nuevo relacionado con el cloud y que lleva al extremo el concepto de escalabilidad, ya que los recursos del usuario del cloud pueden crecer y decrecer de forma rápida en función de sus necesidades.
  • Pago por uso: La utilización real que hace el usuario de los recursos y no una tarificación por tramos es lo que define el pago de los servicios de cloud.

Los servicios que se ofrezcan a los usuarios que cumplan estos requisitos se pueden considerar propiamente cloud computing y puesto que son requisitos bastante amplios, normalmente se clasifican en función del tipo de servicio que ofrezcan en tres capas: SaaS, PaaS e IaaS.

  • Software as a Service (SaaS): Aplicación completa ofrecida como servicio en la nube. Es el ejemplo más conocido y usado de cloud computing en el que cualquier usuario hace uso de un determinado software de una empresa a través de Internet, como por ejemplo los servicios de Google, microsoft Office 365 y un larguísimo etcétera.
  • Platform as a Service (PaaS): Aplicación completa para el desarrollo y despliegue de software. Los desarrolladores de software pueden optar por utilizar una plataforma en la nube para sus desarrollos, facilitándoles mucho la tareas de pruebas y despliegue. Algunas de las opciones más conocidas de PaaS son Google App Engine, Windows Azure, Red Hat OpenShift o Heroku. Obviamente esta capa de cloud es sólo para desarrolladores o empresas que se dedican al desarrollo, pudiendo ser obviada por el resto de usuarios.
  • Infrastructure as a Service (IaaS): Principalmente almacenamiento y capacidades de cómputo (máquinas virtuales) ofrecidos como servicio en la nube. Los administradores de sistemas de todo el mundo pueden hoy en día plantearse montar un servicio en una máquina física, una máquina virtual o una instancia en el cloud, ofreciendo esta última unas opciones muy interesantes sobre todo para despliegues de demanda variable. Los servicios de cloud IaaS más conocidos son los de Amazon Web Services, RackSpace Cloud, Joyent o Windows Azure.

La capa más completa y compleja de todas es la de IaaS y será en la que nos centremos en este artículo.

Un aspecto que estaba implícito desde el principio en las características del Cloud computing es que es un servicio que una empresa ofrece a terceros, pero las interesantes tecnologías subyacentes a la forma de trabajar en cloud, hicieron que hace algunos años distintas empresas y organismos se planteasen utilizar la misma forma de trabajo pero con sus propios recursos, de manera que también se suele distinguir no sólo la capa sino también el ámbito de uso del cloud en:

  • Público: Una empresa ofrece servicios a terceros, encargádose de toda la gestión del Cloud.
  • Privado: Una organización configura sus propios recursos de forma mucho más flexible en una nube.
  • Híbrido Algunos servicios se gestionan en el cloud privado y otros se transfieren a uno público, o incluso haciendo uso de la elasticidad del cloud se pasan recursos de la nube privada a la pública en función de las necesidades. Estos clouds normalmente utilizan una API común que permita una buena integración.

Hay soluciones tanto de software privativo como de software libre que permiten implementar un cloud IaaS, pero de entre todas ellas destaca OpenStack.

OpenStack

El proyecto OpenStack se define así mismo como una plataforma de cloud computing hecha con software libre para desplegar nubes públicas y privadas, desarrollada con la idea de ser sencilla de implementar, masivamente escalable y con muchas prestaciones. OpenStack proporciona una solución de Infraestructura como servicio (IaaS) a través de un conjunto de servicios interrelacionados.

openstack-logo

Principios fundacionales

OpenStack no depende de una sola empresa, sino que se ha constituido una fundación, la OpenStack Foundation, cuyos miembros son elegidos entre todos los participantes y cuyos principios se resumen en los siguientes puntos:

  • Licencia Apache 2.0, no existe version “enterprise”
  • Proceso de diseño abierto
  • Repositorios públicos de código fuente
  • Todos los procesos de desarrollo deben estar documentados y ser transparentes
  • Orientado para adoptar estándares abiertos
  • Diseño modular que permite flexibilidad mediante el uso de APIs

Proyecto abierto

OpenStack ha optado por utilizar la licencia de software libre Apache 2.0, una licencia de software libre permisiva y no copyleft.

Pero no todo es la licencia, sino que en un proyecto de software libre es muy importante saber cómo se toman las decisiones de desarrollo y si se aceptan o no contribuciones de otros. En el caso de OpenStack se ha optado por un desarrollo completamente abierto, en el que se pueden aceptar opiniones y contribuciones de cualquiera. El diseño de nuevas funcionalidades se realiza mediante “blueprints” en launchpad y se presentan y acuerdan muchos aspectos en los summits semestrales que se celebran en distintas ciudades del mundo.

Todo el código del proyecto OpenStack está disponible a través de github y se pueden enviar correcciones de errores o modificaciones a través del Gerrit de OpenStack. La metodología de desarrollo de OpenStack también merece que se destaque, ya que gracias a la utilización de metodologías ágiles se consigue que cerca de 1000 personas repartidas por todo el globo hayan participado en el desarrollo de Havana, la última versión de OpenStack.

Todo el código de OpenStack está desarrollado en Python, de nuevo un acierto, ya que se trata de un lenguaje de programación completamente libre y con una enorme progresión en los últimos años.

Si te gusta el proyecto, únete, puedes empezar por participar en las listas de correo o contribuir en las traducciones.

Componentes

OpenStack no es un solo producto, sino un conjunto de aplicaciones que pueden combinarse en función de las características y necesidades de cada caso, hay algunos componentes fundamentales y otros opcionales. Este esquema de funcionamiento difiere mucho de soluciones “llave en mano”, normalmente privativas que incluyen un conjunto más o menos fijo de componentes muy bien integrados entre sí pero poco flexible. OpenStack tiene una gran flexibilidad y permite implementar un cloud privado en una pequeña empresa o algunos de los mayores clouds públicos del mundo, como contrapartida, exige que la persona encargada de la implementación y la administración del cloud tenga suficientes conocimientos en todas o la mayor parte de tecnologías subyacentes.

Cada componente de OpenStack es totalmente autónomo y funcional y utiliza el protocolo AMQP de gestión de colas para comunicarse con el resto de componentes y una API web RESTful para comunicarse con procesos “externos” o los usuarios. Los principales componentes de OpenStack son:

Nombre Equivalente en Amazon WS Función
Horizon Console Panel web de gestión
Nova EC2 Gestión de instancias
Cinder EBS Almacenamiento de volúmenes
Keystone Autenticación y autorización
Swift S3 Almacenamiento de objetos
Glance VM Import/Export Gestión de imágenes para las instancias
Neutron VPC Redes virtuales

Ejemplo típico de funcionamiento: lanzar una instancia

Dependiendo de los componentes de cada cloud y de si estos están en el mismo o diferentes equipos, o incluso del número de estos componentes que hay en el cloud, se hará más o menos complejo el proceso de lanzar una instancia, pero a grosso modo podríamos resumirlo en los siguientes pasos:

  • Un usuario se autentica en Keystone, bien directamente o a través del panel web Horizon. De esta manera obtiene un token de sesión que le permitirá realizar acciones con el resto de componentes de OpenStack sin necesidad de volver a autenticarse y estas acciones estarán limitadas por los permisos del rol que tenga asignado el usuario en Keystone.
  • El usuario solicita a Glance la lista de imágenes disponibles. Estas imágenes las tendrá alojadas glance directamente en el equipo que se ejecuta o bien serán objetos almacenados en Swift.
  • El usuario selecciona una imagen y solicita a Nova que la instancie, para lo que nova le pedirá las características de la instancia (ram, disco, vcpu, etc.) y una vez recibidas las características, elegirá el nodo del cloud más adecuado para ejecutar la instancia.
  • De la configuración de la red virtual donde se encuentra situada la instancia se encarga Neutron (antes conocido como Quantum), permitiendo no sólo que se pueda acceder a la instancia desde fuera, a través de la denominada IP flotante, sino incluso de la configuración de redes complejas.

Todos estos pasos se realizan rápidamente y en unos segundos el usuario tendrá a su disposición una instancia de la imagen seleccionada, como puede verse en el siguiente vídeo:

Primeros pasos con OpenStack Horizon (Essex) from Jesús Moreno León on Vimeo.

Conclusiones

Si te planteas utilizar Cloud computing IaaS en los próximos años y quieres ver más allá de Amazon, es posible que OpenStack sea la opción a considerar, tanto si el planteamiento es utilizar un cloud privado, como utilizar alguno de los servicios de cloud públicos que utilizan OpenStack: Rackspace y HP Cloud son de momento los más conocidos.

, ,

4 comentarios

How to launch an instance on OpenStack (III): Python novaclient library


The OpenStack project is a libre software cloud computing platform for private and public clouds, which aims to be simple to implement, massively scalable, and feature rich. OpenStack provides an Infrastructure as a Service (IaaS) solution through a set of interrelated services. Each service offers an application programming interface (API) that facilitates this integration.

Users getting started with OpenStack can find useful this and related posts, where different ways of how to launch and instance on OpenStack are given. In the previous posts, how to do this using both OpenStack Dashboard (Horizon) and OpenStack CLI were shown. In this post using the same scenario and starting point, identical result will be achieved, but using OpenStack Python novaclient library instead Horizon or OpenStack CLI. Both sysadmins and devops trying to integrate OpenStack with the rest of their own systems and applications will found this post useful, mainly if they like to use python for these purposes.

Note [19/11/2015]: This post was a little bit outdated because it was written in 2013 using OpenStack Grizzly. Thanks to a comment I realized that there is a change in the way the selected network is defined when an instance is launched, so I’ve made a minor update in this step and now this method must be valid at least up to OpenStack Icehouse (the OpenStack release we’re still using), if you find any other issue, please let me know.

Leer el resto de esta entrada »

, , , ,

6 comentarios

How to launch an instance on OpenStack (II): OpenStack CLI


The OpenStack project is a libre software cloud computing platform for private and public clouds, which aims to be simple to implement, massively scalable, and feature rich. OpenStack provides an Infrastructure as a Service (IaaS) solution through a set of interrelated services. Each service offers an application programming interface (API) that facilitates this integration.

Users getting started with OpenStack can find useful this and related posts, where different ways of how to launch and instance on OpenStack are given. In the previous post, how to do about this using OpenStack Dashboard (Horizon) was shown. In this post using the same scenario and starting point, identical result will be achieved, but using OpenStack command line interface (cli) instead Horizon. Both new users that need a deeper understanding and sysadmins facing for the first time with OpenStack can find this post useful.

Leer el resto de esta entrada »

, ,

3 comentarios

Acceso remoto con ssh utilizando ssh-agent


Esta es una entrada egoísta :-), la escribo para no tener que buscarlo en Internet cuando de vez en vez me hace falta utilizar este tipo de conexión ssh, aunque poniéndola aquí quizás sea útil a alguien más.

ssh es una maravilla de aplicación que permite acceder a sistemas tipo UNIX de forma remota y segura, pudiendo utilizar diferentes mecanismos para autenticar el usuario siendo la contraseña y el par de claves pública/privada los dos mecanismos más usados. En esta entrada explicaremos las diferentes opciones que hay de utilizar acceso con pares de claves pública/privada, terminando con la utilización de ssh-agent que motiva la escritura de esta entrada.

Leer el resto de esta entrada »

,

Deja un comentario

Acceso a un sistema UNIX mediante chroot


En algunas ocasiones es necesario acceder con todos los privilegios a un sistema al que no podemos acceder directamente porque tiene algún problema en la configuración, no arranca adecuadamente, hemos olvidado la contraseña de root o alguna situación similar. Para esos casos es muy cómodo y útil utilizar un sistema auxiliar (CD-live, arranque por PXE, etc.) y acceder al otro sistema mediante chroot.

¿Qué es chroot?

En sistemas UNIX, chroot permite cambiar el directorio raíz de un proceso y todos sus hijos. En principio los programas que se ejecuten dentro de este entorno no pueden salir de él, por lo que se denomina habitualmente un entorno “enjaulado” chroot. Para que este procedimiento funcione, es necesario que el directorio destino sea el directorio raíz de un sistema con los mínimos elementos para funcionar, ya que una vez dentro de la jaula chroot no podemos utilizar ningún recurso de fuera de ella.

Utilizar chroot

Para acceder a un entorno enjaulado con chroot, en principio basta con dos simples instrucciones: montarlo y acceder a él con chroot (supongamos que tenemos un sistema diferente al que se ha arrancado en la partición 7 del disco /dev/sdb):

root@equipo:~# mount /dev/sdb7 /mnt
root@equipo:~# chroot /mnt /bin/sh
# pwd
/

La siguiente imagen representa un entorno enjaulado como el anterior, montado en el directorio /mnt:

Entorno enjaulado chroot

En algunos casos es suficiente con esto, por ejemplo si queremos modificar un fichero del sistema montado en /mnt o algo similar, sin embargo no es suficiente si necesitamos que el nuevo sistema acceda a los dispositivos del equipo, ya que no tiene acceso a ellos. Para solventar este problema, en caso de que sea necesario que el sistema acceda a los dispositivos del equipo, procederemos de otra manera, antes de ejecutar la instrucción chroot, montaremos los directorios /dev, /dev/pts, /proc y /sys del sistema operativo que se está ejecutando en el directorio /mnt:

root@equipo:~# mount /dev/sdb7 /mnt
root@equipo:~# mount --bind /dev/ /mnt/dev
root@equipo:~# mount --bind /dev/pts /mnt/dev/pts
root@equipo:~# mount --bind /proc /mnt/proc
root@equipo:~# mount --bind /sys /mnt/sys
root@equipo:~# chroot /mnt /bin/sh
#

De esta manera el entorno enjaulado verá como propios estos directorios, tal como se representa en la siguiente imagen:

Entorno enjaulado chroot con /dev

Ahora el entorno enjaulado tendrá acceso a red, podrá manejar los dispositivos del equipo, etc., por ejemplo podrá instalar su propoi gestor de arranque GRUB en el primer disco del equipo:

# grub-install /dev/sda

que utilizará el ejecutable /usr/sbin/grub-install del sistema enjaulado, pero lo aplicará sobre el disco /dev/sda del equipo al que ahora sí tiene acceso.

Hay una limitación a todo esto: El entorno enjaulado sigue utilizando el kérnel del sistema que se arrancó, por lo que funcionará mejor cuanto más similares sean los dos sistemas.

, ,

4 comentarios

Instalación y configuración de Xen en Debian Wheezy


Xen es una plataforma libre para virtualización de sistemas. El componente fundamental de Xen es un hipervisor para arquitecturas x86 (x86_64) que permite ejecutar sobre él tanto sistemas operativos modificados en modo paravirtualizado como sistemas operativos sin modificar en modo hvm (hardware virtual machine). La primera versión de Xen que probé fue la 3.0 sobre Debian Etch, de lo que podéis encontrar detallada información en Instalación y configuración de Xen 3.0 en Debian Etch en la sección de manuales.

Estuve utilizando Xen en clase durante varios años, pero cuando Citrix compró XenSource (la empresa que fundaron los creadores de Xen), el soporte en las distribuciones de GNU/Linux se hizo bastante complicado por lo que mucha gente nos pasamos a KVM, un sistema de virtualización integrado en el kérnel linux y fácilmente utilizable. Parece ser que esas turbulencias ya pasaron y que desde hace un tiempo el soporte de Xen en los núcleos de la mayoría de las distribuciones vuelve a ser bueno. Aunque es difícil que Xen le quite ya a KVM su posición dominante, es una magnífica alternativa y vale la pena aprender a utilizarla.

En esta entrada vamos a explicar la forma de configurar un equipo con Debian Wheezy (versión de Debian actualmente congelada y que próximamente se estabilizará y será publicada como Debian 7.0) como dominio principal con Xen como hipervisor. No vamos a entrar en detalles sobre la provisión de máquinas virtuales o la configuración de las redes en Xen, que no ha cambiado respecto a versiones anteriores y que daremos por conocido.

Leer el resto de esta entrada »

, , ,

3 comentarios

A %d blogueros les gusta esto: