Guía de estilo de pkgsync | Algo de Linux

domingo, 4 de marzo de 2018

Guía de estilo de pkgsync

Como ya sabéis, para gestionar los equipos informáticos de los centros educativos, los administradores usamos pkgsync en combinación con puppet.

A partir del año 2013, comencé a añadir nuevas funcionalidades y mejoras a esta herramienta para hacerla más potente y permitirnos usarla tanto de forma desatendida como de forma interactiva, o, incluso desactivarla, cuando no es conveniente que se ejecute. Algunas de esas funcionalidades nos proporcionan flexibilidad a la hora de utilizar la herramienta. En este post voy a ir construyendo una guía de estilo para establecer una serie de normas que faciliten nuestro trabajo a la hora de usar pkgsync.

Cómo funciona pkgsync

pkgsync maneja tres listas de paquetes gestionadas de forma centralizada por administracionsi:
  • /etc/pkgsync/musthave: Lista de paquetes que deben estar instalados en la máquina.
  • /etc/pkgsync/mayhave: Lista de paquetes que pueden instalarse en la máquina.
  • /etc/pkgsync/maynothave: Lista de paquetes que no deben estar instalados en la máquina.
Como estos ficheros siempre han sido gestionados desde Mérida y quería poder gestionar los paquetes del mismo modo, en nuevas versiones de pkgsync añadí tres nuevos ficheros que se fusionan automáticamente con los anteriores:
  • /etc/pkgsync/musthave.ies: Lista de paquetes que deben estar instalados en la máquina.
  • /etc/pkgsync/mayhave.ies: Lista de paquetes que pueden instalarse en la máquina.
  • /etc/pkgsync/maynothave.ies: Lista de paquetes que no deben estar instalados en la máquina.

Más tarde, para facilitar aún más la gestión de paquetes, añadí tres nuevos directorios donde es posible crear ficheros con listas de paquetes que se fusionarán con los ficheros anteriores:
  • /etc/pkgsync/musthave.d
  • /etc/pkgsync/mayhave.d
  • /etc/pkgsync/maynothave.d
De este modo pkgsync fusionará por un lado todos los musthave, por otro los mayhave y por otro los maynothave, eliminando repeticiones y limpiando los ficheros de espacios en blanco y tabulaciones.

Además, modifiqué el comportamiento de pkgsync para que los ficheros maynothave tengan prioridad sobre los musthave, de tal manera que, cuando el administrador especifique un nombre de paquete en un fichero maynothave, si el nombre del fichero se encuentra añadido a cualquiera de los ficheros musthave, pkgsync lo ignorará para que aptitude no trate de instalarlo. Ésto resuelve el problema de instalar un paquete que es incompatible con los que se han instalado por defecto en el sistema y el que se ha instalado por defecto en el sistema no se usa y nos estorba.

pkgsync se ejecuta por defecto diariamente mediante anacron con el script /etc/cron.daily/nightly-pkgsync. Podéis cambiar la frecuencia con que se ejecuta pkgsync en diferentes tipos de máquinas con tan sólo modificar el fichero init.pp del módulo puppet pkgsync-frequency. Las tres posibles opciones son:
  • daily
  • weekly
  • mothly

Guía de estilo

Pues bien. Ahora que ya sabemos cómo funciona pkgsync, establezcamos una serie de normas de estilo que nos facilitarán la tarea de gestionar el software mediante puppet y pkgsync.
  • En los ficheros musthave solamente deberían incluirse los paquetes instalados en el sistema base, es decir, el sistema operativo sin software adicional.
  • Los ficheros musthave no deberían contener librerías, y, como mucho, tan sólo deberían figurar las esenciales del sistema base. 
  • Las librerías deberían incluirse en ficheros específicos. Por ejemplo, en /etc/musthave.d/librerias
  • Los ficheros que garantizan la instalación de kernels, deberían incluirse en ficheros específicos, como por ejemplo, en /etc/musthave.d/kernel. Además, deberían incluir más de un kernel, para tener una opción de arranque en el caso de que exista algún problema con alguno de los kernels instalados.
  • Si se requiere instalar módulos para el hardware, se deberían incluir en un fichero específico de módulos: /etc/musthave.d/modulos
  • El software específico debería clasificarse en ficheros específicos para facilitar las tareas de instalación/desinstalación. Por ejemplo:
    • /etc/musthave.d/libreoffice6
    • /etc/musthave.d/smartboard
    • /etc/musthave.d/programacion
    • /etc/musthave.d/educacion
    • /etc/musthave.d/virtualbox
  • Así, si se quisiera desinstalar un software específico, no habría más que mover el fichero del directorio /etc/musthave.d al /etc/maynothave.d. 
  • E instalar, sería tan sencillo como que el módulo puppet que realice una tarea de instalación, coloque los ficheros en el cliente.
Publicado por primera vez en http://enavas.blogspot.com.es

No hay comentarios: