13.2 - Cómo Automatizar

Para automatizar algo, primero hay que hacerlo manualmente. Luego se escribe el código para cada paso. A continuación, se juntan los pequeños trozos de código, probando cada adición a medida que se añade. Por último, se prueba todo el sistema.

El primer paso para automatizar un proceso es asegurarse de que puede hacerlo manualmente. Documente cada paso y asegúrese de que puede escribir código para realizarlo. A continuación, pon todas las piezas juntas.

Muchas veces un protégé ha venido a pedirme ayuda para automatizar algo. “¡He trabajado en este problema durante horas! Estoy completamente atascado”, me dice.

“Bien”, le respondo, “muéstrame cómo lo harías manualmente”.

“No lo sé. No puedo averiguarlo”.

“La raíz de tu problema es precisamente esa, joven padawan. ¿Hmmm?”

Como se comentó en el capítulo 12, una de las ventajas de documentar un procedimiento es que escribir los pasos es la clave para poder automatizar algo. No estaba bromeando. De hecho, cuando no tengo tiempo para automatizar algo, escribo el procedimiento paso a paso en mi Wiki indicando a otra persona cómo hacer la tarea. Cuando hago eso, he logrado dos cosas. En primer lugar, he contribuido a la documentación de cómo funciona nuestro sistema. En segundo lugar, he realizado el primer paso de la automatización del proceso.

Documente los pasos y luego automatice. Si no puedes escribir los pasos, nunca sabrás cómo automatizarlos.

El proceso de escribir los pasos te obliga a identificar todos los pasos. A diferencia de tener todos los pasos en la cabeza, puedes mostrar el documento a otras personas para que verifiquen el proceso.

Si no tienes una Wiki, puedes utilizar papel y lápiz o un archivo de texto. Haz los pasos manualmente y anota los pasos. Cualquier comando que escribas debe ser pegado en el documento de texto.

Convierta cada paso en algo que pueda hacerse desde la línea de comandos o dentro de un programa corto. Pruebe cada paso individualmente. Es decir, puede escribir una serie de pequeños scripts, cada uno de los cuales verifica que el código que tiene para ese paso en particular es correcto.

Si algún paso implica una interfaz gráfica de usuario (GUI), debes encontrar los equivalentes en la línea de comandos. Algunos sistemas operativos facilitan esta tarea. Por ejemplo, el System Administration Manager (SAM) de HP-UX tiene un botón que puedes pulsar para obtener el equivalente en línea de comandos de la acción que va a realizar. Mac OS X cuenta con Automator y AppleScript, que permiten automatizar procesos que normalmente se realizan a través de la interfaz gráfica de usuario. Windows tiene muchas herramientas diferentes que son similares. Sin embargo, las herramientas que automatizan la pulsación de botones pueden no ser tan útiles como la configuración directa de varias claves del registro o entradas LDAP.

Libros recomendados para administradores de Microsoft Windows:

  • Windows Server Cookbook (O'Reilly). Puedes aprender mucho de este libro leyéndolo de principio a fin. Te sorprenderá la cantidad de cosas que pensabas que sólo se podían hacer a través de la interfaz gráfica de usuario y que se pueden programar fácilmente mediante una serie de actualizaciones del registro. Te abrirá la mente a las posibilidades. Los ejemplos están en muchos lenguajes, generalmente VBasic y Perl.
  • Perl for System Administration (O'Reilly). Este libro es particularmente bueno si usted administra tanto sistemas Unix como Windows. Está centrado en Perl (obviamente) y las personas con experiencia en Unix pueden sentirse más cómodas con él. Es particularmente bueno si usted es un gran usuario de ActiveDirectory y/o LDAP.

Libros recomendados para administradores de Unix/Linux:

  • Perl for System Administration (Ver la descripción completa en los libros de Windows).
  • UNIX System Administration Handbook (Prentice Hall PTR). Este libro no sólo enseña los fundamentos de la administración de Unix, sino que también incluye muchos recursos y herramientas valiosas. La mayoría de los ejemplos utilizan la línea de comandos, lo que significa que se pueden programar fácilmente.

Una vez que el código de cada paso funciona, puede reunir el código de cada paso en un gran script.

Incluso cuando se reúne el código, es mejor añadir un paso a la vez. Prueba después de cada nuevo paso que se añade. Esto se llama desarrollo incremental y es la mejor manera de probar la automatización. Al probar después de cada pequeño cambio, estás más seguro de que todo el asunto funcionará cuando hayas terminado.

Por ejemplo, cuando contratamos a una nueva persona, tenemos que crear su cuenta en el directorio LDAP, configurar su espacio web en nuestro servidor web interno y probar su cuenta para asegurarnos de que se ha creado correctamente. Cada uno de estos pasos puede ser automatizado individualmente. Verificamos que tenemos comandos que funcionan para cada paso. Luego ponemos el primer conjunto de comandos en un script y probamos sólo eso. Nos aseguramos de que el procesamiento de opciones de la línea de comandos funciona, cualquier comando de depuración que queramos que funcione, etc. Ejecutamos el script y nos aseguramos de que las entradas LDAP son correctas. Una vez que todo esto funciona, añadimos el siguiente grupo de comandos y lo probamos. Nos aseguramos de que las entradas LDAP siguen siendo correctas, y luego comprobamos que el espacio web interno existe. Entonces añadimos el siguiente paso y probamos todo de nuevo.

Finalmente, probamos todo el conjunto. Si hemos probado cada paso a medida que lo añadimos al programa, en realidad hay muy pocas pruebas que hacer.

A los programadores no les gustan las pruebas. Quieren que las cosas funcionen a la primera. Al integrar las pruebas en cada paso del proceso, las pruebas no parecen demasiado laboriosas y, como resultado, hay mucho menos que hacer al final.


Volver al índice