Ir para o conteúdo
TURNKEYGNU / LINUX
AplicativosDocumentaçãoBlogCapturas de telaGitHubTurnKey Hub
文Português
EnglishEspañol中文日本語PortuguêsDeutsch
Principal/Ganchos TKLBAM

Documentação

Ganchos TKLBAM

Esta página do documento é baseada em este post do blog.

TKLBAM tem um mecanismo de ganchos de propósito geral, que você pode usar para ativar ações úteis em backup e restauração.

Exemplos de ganchos:

  • Limpar os ficheiros temporários
  • Serviços de paragem/início para aumentar a consistência dos dados
  • Dados de codificação/decodificação de bases de dados não suportadas
  • Usando LVM para criar/restituir um instantâneo de um volume em rápida mudança

O mecanismo de ganchos foi originalmente desenvolvido para que pudéssemos corrigir alguns problemas indiretamente relacionados com a usabilidade do TKLBAM. Em particular, nossos primeiros usuários beta relataram que às vezes o tklbam-restore não encontraria nenhum volume de backup. Quando investigamos, isto acabou por ser uma discrepância de relógio. A solução óbvia era sincronizar o relógio antes de iniciar a restauração, mas quanto mais eu pensava sobre isso, mais a idéia de ligar duro que ntpdate coisas me esfregaram da maneira errada. Por algumas razões:

  • É um problema auxiliar, não um problema central com a lógica do TKLBAM.
  • Estou off-line durante o desenvolvimento, então precisava de uma maneira de desligar isto, mas não quero adicionar mais código específico de testes a menos que seja absolutamente necessário.
  • Está tudo bem se um servidor específico (por exemplo, pool.ntp.org) é o padrão, mas deve haver alguma maneira de configurá-lo se um usuário, por exemplo, quiser usar um servidor NTP interno.

Tentei pensar numa maneira limpa de atingir estes objectivos simples de uma forma limpa (por exemplo, opções cli, variáveis de ambiente, ficheiros de configuração), mas tudo o que eu vim com foi Tão feio.

Então eu percebi que um mecanismo de ganchos resolveria este problema de uma forma simples, genérica.

Execução

/etc/tklbam/hooks.d pode conter executáveis (por exemplo, scripts) que serão executados pelo tklbam antes e depois de duas operações (atualmente):

  1. backup
  2. restaurar

Dois argumentos são passados para os ganchos:

  1. operação: restauração/recuperação
  2. estado: pré/pós

Os códigos de saída não zero levantam um HookError.

Vantagens

Em um traço, resolver o problema do relógio e também permite que usuários avançados definir seus próprios ganchos para cuidar de coisas que TKLBAM não faz (por exemplo, parar processos intensivos IO antes backup, codificação/decodificação de bases de dados não suportadas, etc.)

Exemplo de gancho de fixação

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 mais informações, discussão e comentários, consulte post original do blog por Liraz.

TURNKEYGNU / LINUX

Controle sua infraestrutura sem começar do zero.

Explorar o TurnKey
SobreDocumentaçãoPerguntas frequentesBlogGitHub
Livre e de código abertoSeguro por padrãoPronto para implantar