1. Fabric es un módulo y conjunto de utilidades que nos simplifica enormemente el realizar muchas tareas, normalmente repetitivas y tediosos, un una o varias máquinas simultáneamente. Es una especie de make con esteroides.

    Fabric tiene varias características interesantes, entra las que destacan que es software libre, y que resulta sencillo de utilizar y de instalar. Pero tiene el interés añadido de que está escrito en Python, por lo cual es relativamente fácil añadir nuevas funcionalidades. Además, los ficheros fabfile, que vendrían a ser los equivalente a los Makefile para make o a los ficheros de configuración build.xml de Apache Ant, son en si programas Python. Por cierto, soy de los que piensan que los ficheros de configuración necesitan del XML tanto como un pez necesita una bicicleta. Si eres un xml-zombie puedes ir a la parte de comentarios e insultar allí directamente. De nada.

    Veamos un ejemplo: supongamos que tenemos una máquina de desarrollo, 'alfa', otra de pruebas, 'beta', y una tercera de explotación, 'omega'. Queremos, desde la máquina de desarrollo, subir una actualización de código al repositorio, previo control de nuestra batería de pruebas. Si todo es correcto, deseariamos actualizar los servidores. Podemos crear un fichero fabfile.py con el siguiente contenido:

    from fabric.api import run, cd, local
    
    def deploy_up():
        code_dir = '/home/euribates/workarea/proyecto'
        with cd(code_dir):
            local('nosetests')
            local('hg commit')
            local('hg push')
    
    def deploy_down():
        code_dir = '/var/www/django/proyecto'
        with cd(code_dir):
            run('hg pull')
            run('hg update')
            run('service apache2 restart')
    

    El uso de las utilidades de Fabric como cd o run hacen que el fichero sea fácil de escribir y, lo que es más importante, fácil de leer. Estoy usando Nose para las pruebas unitarias y Mercurial como sistema de control de versiones, pero esto son mis opciones personales, fácilmente sustituibles por otras. Con este fichero, ahora puedo hacer:

    fab deploy_up
    

    Y fabric hará el trabajo sucio por mi. Fabric aborta el proceso si alguno de las programas devuelve un código de error, así que si no se pasan todos los tests, no se ejecutarán ni el commit ni el push, algo bastante de agradecer.

    Si todo ha ido bien, puedo hacer:

    fab deploy_down -D beta
    

    Para que actualice el código en 'Beta' y reinicie el servidor Apache2. Si eres persona animosa y de corazón valiente, también puedes actualizar en las dos máquinas a la vez, con:

    fab deploy_down -D beta,omega
    

    Nota: local y run son equivalentes, ambas ejecutan el comando que se les indica, pero local siempre lo hace en la máquina local, mientras que run lo hará en las maquinas que le indiquemos, usando ssh. Por eso podemos hacer deploy_up sin indicar nada, pero si intentamos hacer un deploy_down sin especificar al menos una máquina, fabric protestará.

    Hay muchas cosas más que se pueden hacer con esta herramienta, y podemos aprenderlas en el Tutorial de Fabric.

    0

    Añadir un comentario

Archivo del blog
Etiquetas
Etiquetas
Enlaces interesantes
Cargando