Archivo de la categoría: Ferramentas

Actualización de Gitlab a la versión 7.2

Acabamos de actualizar la instalación de Gitlab del centro a la última versión disponible. En esta ocasión, hemos pasado de la versión 6.8 a la 7.2. Las principales novedades son estas:

Gitlab

  • Se pueden asignar colores a las etiquetas del gestor de issues (7.2).
  • Se pueden agrupar los repositorios con el mismo milestone, de forma que es más sencillo trabajar con las milestones en proyectos que utilizan varios repositorios (7.1).
  • Nueva página de login (7.1).
  • Al gestionar milestones, se puede cambiar el estado de los issues arrastrando y soltando en su columna correspondiente (7.0).
  • Hay algunos cambios sutiles de permisos en los roles developer y master (7.0).

Gitlab publica una nueva versión cada mes y en el CiTIUS actualizamos Gitlab con frecuencia, especialmente si hay algún problema de seguridad que se solucione con una actualización.

El sistema de integración continua Gitlab CI no se actualiza con tanta frecuencia. La última versión data de mayo de 2014 y desde que lanzamos el servicio no ha salido ninguna versión nueva.

Actualización del cloud IaaS a Cloudstack 4.3

La semana pasada actualizamos el cloud a Cloudstack 4.3, que soluciona muchos problemas que teníamos con la versión 4.1 que lanzamos como servicio el año pasado.

cloudmonkey-fp

  • Ahora es posible cambiar la cuenta de las máquinas virtuales desde la interfaz, así que se pueden asignar a un proyecto o a otro usuario después de crearse.
  • Además de añadir más discos secundarios para datos, se puede ampliar el tamaño de los discos de datos existentes (pero no del principal).
  • Las plantillas se asocian correctamente a las cuentas de los proyectos, así que ya no es necesario que sean públicas para poder utilizarlas, o borrarlas.
  • Ahora es posible añadir varias IPs a una misma interfaz de red y asignar varias redes a una misma máquina virtual.

Se pueden consultar las notas de la versión 4.2.0 y la versión 4.3.0, aunque están dirigidas a administradores.

Además, hemos ampliado el almacenamiento secundario, que es el espacio en el que se guardan las plantillas y las ISOs, con 2TB más, para evitar los problemas de escasez que había hasta ahora.

Trabajando en la terminal de forma más productiva (II)

Hace un par de semanas mostramos algunas alternativas para trabajar en la terminal de forma más productiva en la primera parte de esta entrada (ojo también a los comentarios). Hoy hablaremos de terminales y de alternativas a aplicaciones tradicionales para terminal.

Terminales para todos los gustos

Hoy en día hay emuladores de todo tipo. La mayoría disponen de pestañas, integran opciones de historial y colores. Pero hay distintas características que pueden ayudar a mejorar la productividad.

Guake y Yakuake son dos opciones muy populares de terminales tipo Quake, llamadas así porque, como la terminal de debug del videojuego Quake (1996), se deslizan desde la parte superior de la pantalla.

Terminator permite dividir la terminal en varios tiles y escribir en todas (o solo en algunas) a la vez. Se pueden reordenar, dividir, minimizar… Terminator es una opción muy cómoda para realizar la misma tarea en varias máquinas. Además, soporta múltiples atajos de teclado y tiene un sistema de plugins para añadir funcionalidad adicional.

Captura de pantalla de 2014-05-16 17:44:46

Final Term es un concepto de terminal más moderno, que tiene funciones muy interesantes como autocompletado utilizando un menú contextual, reconocimiento semántico de la salida de los programas. Reconoce la salida de los comandos más habituales y muestra opciones, permite contraer la salida de los comandos…

text-menu

Alternativas a las utilidades clásicas de terminal

Las utilidades como ps o top son ampliamente conocidas por estar presentes en prácticamente todos los sistemas basados en GNU/Linux, pero existen otras alternativas interesantes que, en muchas ocasiones, son mucho más productivas.

La utilidad htop es una versión mejorada de top. Soporta color, muestra la información de carga de cada core por separado y permite navegar por los procesos utilizando el teclado para realizar acciones sobre esos procesos, como enviarles señales o modificar su niceness.

En lugar de df se puede utilizar la herramienta pydf, que muestra de forma algo más gráfica el espacio disponible en cada punto de montaje, usando colores y gráficos de barras.

Captura de pantalla de 2014-05-17 18:56:17

Dstat hace las veces de vmstat, iostat, netstat e ifstat, también con salida a color. Tiene alguna funcionalidad adicional, como permitir mostrar mediciones por procesador, punto de montaje o interfaz de red.

Ncdu acerca la utilidad du a alternativas de escritorio más completas, mostrando el espacio utilizado de forma gráfica. Permite también borrar archivos y directorios moviéndose con el teclado.

¿Conocéis más utilidades del estilo? ¿Qué aplicación de terminal es vuestra favorita? Te animamos a compartirlo con todos en los comentarios de la entrada.

Trabajando en la terminal de forma más productiva (I)

Una de las herramientas que utilizamos a diario es la terminal. Y aunque alguna gente Apps-konsole-iconparece tenerle un poco de tirria, hay también gente que sabe que, usada a su debido tiempo, un poco de terminal puede resultar muy productivo y sencillo.

Hoy compartiremos algunos pequeños trucos (que están en el manual, por cierto) para hacerlo todavía mucho más sencillo y productivo. Volveremos a insistir en este tema dentro de algunas semanas.

Historial

Es cierto que hay comandos muy complicados y que tienen unas opciones muy difíciles de recordar. Probad a usar imagemagick, o mencoder y sabréis a qué me refiero. Para esos casos, consultar el manual puede ser necesario la primera vez, pero la segunda vez no hará falta, porque podremos verlo en nuestro propio historial.

Para ver el historial basta con escribir el comando history. Bash lo pone más sencillo aún, y pulsando Control R se puede hacer una búsqueda hacia atrás. Si nos hemos pasado, se puede pulsar Control S para buscar hacia adelante. Una vez encontrado el comando deseado, basta con pulsar intro para ejecutarlo, o bien usar las flechas del teclado para moverse por él y modificarlo al gusto si fuera necesario.

Por defecto, solo se guardan los últimos 500 comandos introducidos, pero se puede aumentar esta cifra para no perder los comandos utilizados en mucho tiempo cambiando la variable de entorno HISTSIZE de forma permanente:

echo 'export HISTSIZE=10000' >> ~/.bashrc

Por supuesto, el historial tiene muchas más opciones y formas de utilizarse, pero se pueden consultar en su sección del manual.

Combinaciones de teclas interesantes

Bash soporta muchos atajos de teclado similares a los que se utilizan en EMACS. Pero vamos a suponer que el usuario medio no conoce EMACS o, con criterio, no quiere conocerlo. Aún así hay combinaciones sencillas de recordar y muy útiles.

  • Control ← y Control →: Permiten moverse por la linea actual más rápido, saltando de palabra en palabra, en lugar de hacerlo por caracteres.
  • Control Insert y Shift Insert: Permite trabajar con el portapapeles, copiando y pegando respectivamente. No es necesario pulsar Control Insert para copiar si vas a pegarlo en la misma terminal, ya que Shift Insert pega del portapapeles automático.
  • Control _: Deshace los cambios realizados en la línea actual, incrementalmente.

Te animamos a dejar en los comentarios tus pequeños trucos que te ayudan a ser más productivo usando la terminal.

Controlar aplicaciones en remoto usando screen y xpra

Normalmente, lo que se hace para ejecutar aplicaciones en un equipo remoto es conectarse mediante SSH (y si la aplicación utiliza ventanas gráficas, activando el X11 Forwarding con la opción -X). Esto es ampliamente conocido por los usuarios de GNU/Linux.

Pero esto obliga a mantener la conexión abierta, corriendo el riesgo además de que, si se corta, la aplicación reciba una señal HUP, que normalmente hace que se cierre. En cualquier caso, no es posible volver a interactuar con la aplicación.

nohup

Una primera aproximación puede ser utilizar nohup para que la aplicación ignore las señales HUP y no se cierre aunque la conexión se corte. Así no es posible recuperar su control más adelante, pero si no se trata de un trabajo interactivo es suficiente.

nohup trabajo &

screen

Screen es un gestor de sesiones de consola, que permite lanzar una sesión y recuperarla más adelante, si la conexión se corta o no queremos mantener el equipo conectado y encendido permanentemente.

Su uso es muy sencillo, basta con ejecutar este comando, con lo que se abrirá la sesión existente de haberla, o en caso contrario se creará una nueva:

screen -x -R

Una vez dentro de la sesión, puede controlarse con los siguientes atajos de teclado:

  • Control + A + D : Separarse sin cerrar la sesión (se podrá recuperar más adelante).
  • Control + D : Cerrar la sesión definitivamente.

Esto permite iniciar una sesión en un equipo, conectarse desde otro y recuperarla (interactuando incluso desde ambos equipos al mismo tiempo). O bien cerrar la conexión y recuperar la sesión más tarde.

El problema aparece cuando una aplicación utiliza ventanas gráficas, ya que, aunque se utilice el X11 forwarding combinado con screen, no es posible recuperar las ventanas más adelante tan solo usando screen.

Xpra

Xpra puede entenderse como un análogo de screen para ventanas. Es un servidor de X11 que permite conectarse a él desde diferentes lugares (eso sí, no al mismo tiempo) y así recuperar las ventanas de las aplicaciones ejecutándose en remoto.

En el equipo en el que va a estar ejecutándose la aplicación, se debe iniciar un servidor de xpra con el siguiente comando:

xpra start :100

Con esto, se iniciará un servidor X en el display número 100. A partir de entonces, solo hay que dirigir las aplicaciones a ese display para poder recuperarlas más adelante.

DISPLAY=:100 firefox

Para recuperar la ventana, sea desde el mismo o desde otro equipo conectándose por SSH con X11 Forwarding, basta con ejecutar el siguiente comando:

xpra attach :100

Hay que tener en cuenta que, al cerrar esa ventana recuperada, la aplicación recibe las señales habituales y terminará. Para desconectar de la ventana sin cerrar la aplicación, basta con pulsar Control + C en la terminal.

screen + Xpra

Si la aplicación es lanzada desde la propia sesión SSH, Xpra no impide que la aplicación se cierre al cortar la conexión SSH, por lo que lo habitual es combinar el uso de Xpra y screen:

xpra start :100 
DISPLAY=:100 screen -x -R

A partir de entonces, las aplicaciones lanzadas dentro de la sesión de screen se redirigirán al servidor Xpra, y podrán ser recuperadas en cualquier momento. Para hacerlo dentro de la sesión de screen, se debe especificar el display correcto.

firefox &
DISPLAY=:10.0 xpra attach :100

No es necesario conectarse por SSH previamente para recuperar una ventana, ya que Xpra puede hacerlo directamente con el siguiente comando:

xpra attach ssh:usuario@equipo:100

En la página de manual de Xpra hay mucha más información interesante, ya que permite hacer muchas más cosas. Además, en la wiki del centro hay un tutorial sobre el uso de screen.

Revisitando modules en ctcomp2

El clúster de computación ctcomp2 utiliza modules para la gestión del software. Aunque pueda parecer una opción ineficaz e incómoda, en comparación con las herramientas de gestión de paquetes en sistemas de sobremesa (como, por ejemplo, apt en GNU/Debian), lo cierto es que, desde el punto de vista del administrador, facilita la gestión de un sistema con muchos usuarios que, a su vez, tienen muchas y muy variadas necesidades. En este post repasamos algunos conceptos de modules y os explicaremos la política de ctcomp2 para utilizar software que incorpore un gestor de paquetes propio.

Básicamente, el comando modules maneja las variables de entorno para modificar los PATHs en los que el sistema operativo busca los ficheros ejecutables, las librerías… Cada nueva versión del software que se instale en el sistema se encapsula dentro de un módulo que contiene toda la información necesaria para ejecutar adecuadamente el software. De este modo, es posible mantener software incompatible dentro de un mismo sistema o varias versiones diferentes de un mismo programa: el usuario es quien decide el módulo que debe utilizar en cada momento.

El uso de modules facilita la gestión de software instalado en un sistema distribuido, ya que no es necesario instalar el software en todos los nodos del clúster, sino que directamente el nuevo software/versión se instala en un sistema de ficheros compartido por todos los componentes del sistema. Por otro lado, el uso de modules es potencialmente incompatible con la instalación de software precompilado disponible a través del gestor de paquetes, ya que las versiones en ambos espacios pueden ser inconsistentes. Estos motivos nos han llevado a establecer una política de uso para aquellas herramientas que dispongan de un instalador de paquetes propio integrado (R, Python o Octave, por ejemplo). La instalación de paquetes asociados a estos programas la realizará el usuario a través del propio programa, instalando los paquetes en un directorio de su propio HOME, en vez de utilizar los directorios del sistema. Es decir, siempre que sea posible, el usuario deberá realizar la instalación de software. Puede parecer cómodo administrativamente… y sí, lo es, ¡pero es por el bien común, para garantizar la estabilidad del sistema! En el Repositorio de documentación podéis encontrar un pequeño manual con ejemplos de cómo utilizar los instaladores integrados para los programas instalados en ctcomp2.

Para finalizar, hagamos un pequeño repaso a los comandos básicos de modules.

  1. Ver el listado de módulos disponibles en el sistema:
    module avail
  2. Cargar un módulo:
    module load modulo/version

    A partir de este instante, ya podremos utilizar el software asociado a ese módulo.

  3. Eliminar un módulo:
    module unload modulo/version

    A partir de este instante ya no se puede acceder al software asociado a ese módulo.

Teneis más información el la Guía de usuario del clúster ctcomp2.

Simular limitacións no ancho de banda

Comezamos hoxe unha nova categoría da bitácora sobre ferramentas, na que falaremos dalgunhas das pequenas aplicacións que fan posible o noso traballo e que poden ser moi útiles en determinadas situacións.

Limitar o ancho de banda é algo moi útil se queres, por exemplo, simular a velocidade de carga dunha páxina web, ou detectar problemas de configuración nos servidores que poden afectar só a un determinado grupo de usuarios por ancho de banda da sua propia conexión.

Tamén é moi útil en situacións domésticas, nas que un router deixa de responder ben ou aumenta moitísimo a súa latencia ó saturar o canal de saída ou entrada, cousa bastante común en conexións de ADSL.

Trickle

Trickle é un xestor de ancho de banda en espazo de usuario, que intercepta as chamadas de sistema de socket e modifica o seu comportamento. Pode limitar o ancho de banda de entrada e de saída independentemente.

trickle -d 2500 -u 30 firefox

Este comando lanzará o Firefox cun límite de baixada de 2500kB/s e de 30kB/s, a velocidade dun ADSL rural en determinadas zonas de Santiago.

Trickle tamén ten un modo de funcionamento no que, cun proceso executándose de fondo (daemon) e lendo as limitacións dun ficheiro de configuración, limita os programas sen ter que chamar a trickle de cada vez.

 Wondershaper

A pesar do que poida suxerir o seu nome, Wondershaper é un script que utiliza iproute2 para limitar o tráfico de forma sinxela a nivel de do sistema operativo. Está orientado a mellorar os tempos de latencia das conexións domésticas de ADSL, debido a saturacións do router, e de feito ven cunha axuda moi extensa orientada precisamente a eso.

O paquete de Wondershaper en sistemas Debian ou Ubuntu ven con axuda adicional sobre como proceder na súa configuración, comezando cos tests de latencia para buscar o mellor valor. De todos os xeitos para limitar o ancho de banda basta con chamar ó programa deste xeito:

/sbin/wondershaper eth0 2500 30

Comando que, loxicamente, débese executar cada vez que arranque o sistema se os cambios se queren facer de forma permanente. Pódese configurar en upstart en Ubuntu, ou de forma máis sinxela, no arquivo /etc/network/interfaces ou equivalente noutras distribucións.

A maior diferencia práctica con Trickle é que Wondershaper actúa sobre a interface de rede, e non interceptando as chamadas de sistema, polo que funciona a máis baixo nivel e serve tamén para limitar ós programas compilados estáticamente. Eso si, require executarse como root.

E ti, ¿utilizas xa este tipo de ferramentas? ¿En que axudan ó teu traballo?