Saltar al contenido
TURNKEYGNU / LINUX
AplicacionesDocumentaciónBlogCapturas de pantallaGitHubTurnKey Hub
文Español
EnglishEspañol中文日本語PortuguêsDeutsch
Home/Ganchos TKLBAM

Documentación

Ganchos TKLBAM

Esta página de documento se basa en este blog post.

TKLBAM tiene un mecanismo de ganchos de propósito general nifty que puede utilizar para activar acciones útiles en la copia de seguridad y restauración.

Ejemplos de ganchos:

  • Limpieza de archivos temporales
  • Servicios de parálisis/iniciación para aumentar la coherencia de los datos
  • Codificación/decodificación de datos de bases de datos no compatibles
  • Utilizando LVM para crear/restorer una instantánea de un volumen de cambio rápido

El mecanismo de ganchos fue desarrollado originalmente para poder solucionar algunos problemas indirectamente relacionados con la usabilidad de TKLBAM. En particular, nuestros primeros usuarios beta informaron que a veces la restauración tklbam no encontraría ningún volumen de respaldo. Cuando investigamos esto resultó ser una discrepancia de reloj. La solución obvia era sincronizar el reloj antes de comenzar la restauración, pero cuanto más pensaba en ello más la idea de cablear duro que ntpdate me frotó de la manera equivocada. Por algunas razones:

  • Es un problema auxiliar, no un problema central con la lógica de TKLBAM
  • Estoy fuera de línea mucho tiempo durante el desarrollo así que necesitaba alguna manera de apagar esto, pero no quiero añadir más código específico de pruebas a menos que sea absolutamente necesario.
  • Está bien si un servidor específico (por ejemplo, pool.ntp.org) es el predeterminado, pero debe haber alguna manera de configurarlo si un usuario, por ejemplo, quiere utilizar un servidor NTP interno.

Intenté pensar en una manera limpia de lograr estos objetivos simples de una manera limpia (por ejemplo, opciones de cli, variables de entorno, archivos de configuración), pero todo lo que me inventé fue Tan feo.

Entonces me di cuenta de que un mecanismo de ganchos resolvería este problema de una manera simple, genérica.

Aplicación

/etc/tklbam/hooks.d puede contener ejecutables (por ejemplo, scripts) que serán operados por tklbam antes y después de dos operaciones (actualmente):

  1. respaldo
  2. restaurar

Dos argumentos se transmiten a los ganchos:

  1. operación: restauración/retroalimentación
  2. estado: pre/post

Los códigos de salida no cero elevan un HookError.

Ventajas

En un solo golpe, resolver el problema del reloj y también permite a los usuarios avanzados definir sus propios ganchos para cuidar las cosas que TKLBAM no (por ejemplo, detener los procesos intensivos de IO antes backup, codificación/decodificación de bases de datos no compatibles, etc.)

Gancho de fijación de ejemplo

import os
import sys
import executil
from string import Template

NTPSERVER = os.environ.get("NTPSERVER", "pool.ntp.org")

ERROR_TPL = """\
##########################
## FIXCLOCK HOOK FAILED ##
##########################

Amazon S3 and Duplicity need a UTC synchronized clock so we invoked the
following command::

    $COMMAND

Unfortunately, something went wrong...

$ERROR
"""

def fixclock():
    command = "ntpdate -u " + NTPSERVER

    try:
        executil.getoutput(command)
    except executil.ExecError, e:
        msg = Template(ERROR_TPL).substitute(COMMAND=command,
                                             ERROR=e.output)

        print >> sys.stderr, msg,
        sys.exit(1)

def main():
    op, state = sys.argv[1:]

    if op in ('restore', 'backup') and state == 'pre':
        fixclock()

if __name__ == "__main__":
    main()

Para más información, discusión y comentario, consulte blog original por Liraz.

TURNKEYGNU / LINUX

Controla tu infraestructura sin empezar desde cero.

Explorar TurnKey
Acerca deDocumentaciónPreguntas frecuentesBlogGitHub
Libre y de código abiertoSeguro de forma predeterminadaListo para desplegar