Recuperando un servicio como un todo …

tools_server… algunas reflexiones y un par de esquemas.

De cuando en cuando me toca volver a ser administrador de sistemas a tiempo completo. En esta ocasión se debe a que estoy replanteándome el cambio de software de copias de seguridad y, de paso, la realización de copias como proceso.

Es cierto que la herramienta disponible nos condiciona a la hora de emplearla. En mi caso las limitaciones de bacula son las responsables de que los procesos de copias sean tan  difíciles de configurar y tan complejos de revertir.

El principio de bacula sitúa cada proceso de copia como un todo impermeable (al menos en la versión open source) y nos limita a conectarnos a un sistema y extraer de él aquellos archivos que han cambiado. Permite efectuar tareas en el cliente con los máximos privilegios antes de realizar las copias, pero al final siempre trata con archivos y árboles de directorios. La información especial, como las base de datos relacionales o los directorios LDAP, tienen que ser primero exportados con herramientas específicas y forzados a adoptar la forma que requiere el programa.

Todo eso no sería un inconveniente si no fuese porque deja varios cabos sueltos:

  • Las disposiciones necesarias en la configuración del sistema para que los datos puedan ser recuperados: usuarios, permisos, contraseñas de acceso …
  • Los programas que convierten los volcados a datos utilizables (ni se contemplan).
  • Como cada trabajo sólo lee de una máquina no sabe nada de otras. Un ejemplo es un sitio web cuyos archivos estáticos residan en un tercero; en este caso tendríamos dos trabajos de copia que restaurar.
  • Tampoco sabe nada de qué otros programas deben existir y estar configurados. Una aplicación web, por ejemplo, precisa de un servidor de páginas y un entorno de ejecución (PHP, Perl, …).

Resumiendo un poco: bacula no contempla la recuperación de servicios sino de árboles de archivos. Mi interés reside ahora en lo primero: quiero que alguien con un perfil técnico bajo pueda volver a poner en marcha un servicio.

Para ello estoy pensando en cosas que podrían ser interesantes. En el siguiente esquema pueden verse algunas:

Recuperación de un servicioAhora voy a imaginar un momento futuro en el que alguien entrenado por mí tiene que recuperar el servicio:

  1. Accedería a una hoja de instrucciones simple y concreta. Puede estar en el wiki de la empresa pero es más útil si no precisa de un entorno operativo.
  2. Las instrucciones deben dirigirle a una máquina donde está almacenadas las copias clasificadas precisamente por nombre de servicio. También deben indicarle cómo tener acceso a dicha máquina y con qué credenciales presentarse.
  3. En dicho directorio debe encontrarse
    1. Un archivo simple (README, LEAME o así) en el que se detallen:
      1. las dependencias externas del servicio (paquetes instalados, configuración recuperada, servicios externos,…).
      2. Las contraseñas que debe tener a mano.
      3. Los programas que debe ejecutar y cómo.
    2. El script a ejecutar que lleva a cabo, paso a paso y con numerosa información, los procedimientos de recuperación.
    3. Las fuentes de información que debe recuperar:
      1. Árboles de archivos.
      2. Volcados de bases de datos y similares.
      3. Archivos de configuración.

Según escribo me doy cuenta de que existen dos requisitos que es imprescindible resolver antes de liarme a diseñar algo así:

  1. Las contraseñas deben estar accesibles en papel.
  2. Los archivos fuente deben estar disponibles de manera inmediata en el directorio que he citado.

El primero no es difícil ya que las contraseñas de las bases de datos y administrativas no suelen cambiar demasiado; es factible tenerlas en papel junto con la hoja de recuperación.

El segundo ya tiene un poco más de tela si empleamos programas de copias de seguridad de verdad; suelen tener la costumbre de almacenar los datos en formatos especiales, bien en disco, bien en cintas magnéticas, bien en otros servidores, y no suelen ser accesibles si no es mediante sus propios programas.

Bacula (o bareos próximamente) tiene procedimientos de recuperación flexibles y enrevesados. Quizás creando un perfil concreto fuese posible automatizar toda la recuperación con una única orden, sin recurrir a su menú y sus múltiples preguntas, así que esa será mi siguiente prioridad en este tema.

He revoloteado un poco por el asunto y creo que podría partir de un archivo de texto que describiese lo que indica en este esquema:

Descripción del servicioCon este punto de partida podría escribir uno o varios scripts que creasen la configuración correspondiente para realizar copias y para recuperarlas, así como la documentación necesaria para el operador.

Voy a trabajar un poco más …