Una nueva entrega de La biblia del SysAdmin. Sólo una de muchas pendientes. Con la llegada del Curso introductorio a la Administración de Sistemas GNU/Linux tal vez apure a publicar un par de capítulos más. A fin de que sirvan como puntapié y lectura posterior al curso que estaré dictando próximamente.

A lo largo de una serie de artículos voy a publicar los principios básicos que todo SysAdmin debe respetar, practicar y predicar a sus pares. Estos principios los he tomado (y orgullosamente puedo decir que he respetado casi en su totalidad) del artículo General SysAdmin Principles & Guidelines publicado por el Dr. Joe Chung.



Los Administradores de Sistemas, más conocidos como SysAdmins, somos los superhéroes del departamento de sistemas, aquellos destinados a "salvar el día" (muy a menudo y sin mayor reconocimiento, generalmente).

Sexto capítulo dedicado al scripting y automatización de tareas. Un buen SysAdmin jamás debe repetir más de dos veces una misma tarea. Toda tarea que requiera ser llevada a cabo más de una vez amerita ser automatizada.

Imagen cortesía de xkcd (CC BY-NC 2.5)

La biblia del SysAdmin

Capítulo 1: Documentación

Capítulo 2: Lo difícil (seguridad y backups)

Capítulo 3: La eficiencia importa

Capítulo 4: Administración y acceso remoto

Capítulo 5: Reinicios y uptime

Capítulo 6: Automatización y scripting

Capítulo 7: Gestión de software y mantenimiento del sistema

Capítulo 8: Usuarios y soporte

Capítulo 9: Estandarización vs. diversidad

Capítulo 10: Promoción, ética y aprendizaje

Automatización y scripting

Más allá del brillante cómic de xkcd, la metodología de trabajo de un SysAdmin debería ser algo más o menos como lo siguiente. La primera vez que se ejecuta una tarea, se documenta con precisión. La segunda vez, se resuelve a partir de la documentación generada anteriormente y al mismo tiempo se automatiza de la manera más eficiente posible. La tercera vez, se delega a un robot, es decir, se deja todo en manos de la automatización.

  • Aprender y utilizar de manera consistente al menos un lenguaje de scripting (Bash, Perl, Python).
    • Utilizarlo de manera consistente ayuda a perfeccionarnos y sacarle el máximo provecho.
    • Dominar más de un lenguaje nos ayuda a comprender sus diferencias, similitudes y limitaciones, lo cual sirve para saber optar por la mejor solución para cada problema. al mismo tiempo, lenguajes interpretados como Python son más portables que Bash, lo cual nos permite atravesar fronteras en cuanto a sistemas operativos respecta.
    • Conocer y aprender la sintaxis básica de al menos un lenguaje específico de otra plataforma. Por ejemplo, si somos administradores de sistemas GNU/Linux, aprender lo básico sobre PowerShell o WSH.
    • Sin embargo no conviene especializarse en un lenguaje que sea lo suficientemente obscuro e incomprensible para que sólo uno lo entienda y utilice.
  • Salvo que nos guste demasiado tipear, crear aliases y scripts cortos para reducir al máximo el uso de teclado. Incluso para las tareas tan triviales como ejecutar apt-get update && apt-get upgrade:
    alias actualizar='apt-get update && apt-get upgrade'
    
  • Familiarizarse con el uso de la tecla TAB para auto-completar y el historial (history, !) de Bash/csh.
    • Aumentar el tamaño del historial (variables de entorno HISTFILE y HISTFILESIZE).
  • Procesamiento automático/periódico/programado (cron, at).
    • Escribir scripts para llevar a cabo tareas programadas o periódicas (crontab, /etc/cron.*/).
    • Entender el funcionamiento del entorno (env) y sus variables, al igual que del proceso de inicialización de una shell (Bash/csh).
    • Aprender a redirigir salidas estándar y de errores a archivos, y desarrollar scripts que lleven a cabo tareas desatendidas (no interactivas).
    • Conocer herramientas como expect para interactuar con procesos interactivos de manera desatendida.
    • Aprender a generar parámetros de manera dinámica con xargs y redirigir la entrada estándar (<).
    • Testear y verificar el funcionamiento de los scripts ejecutados por cron como cualquier otro programa. Hacer uso del syslog para diagnosticar errores.
  • Escribir scripts que sean escalables.
    • Esto permite que un script siga siendo útil a pesar de que se sigan agregando más y más sistemas a nuestra granja.
    • Aplica a cualquier solución de administración: pensar siempre en términos de escalabilidad. Una solución se vuelve cuanto más util a medida que aplica a más y más sistemas.
    • Dominar las técnicas de paralelismo, concurrencia y subprocesos al momento de crear scripts. Esto implica conocer los comandos embebidos en las shells, tales como jobs, bg, fg, &, etc.

Referencias

Joe Chung - General SysAdmin Principles & Guidelines


Tal vez pueda interesarte


Compartí este artículo