Project

General

Profile

GLUA Mirrors Script

No contexto do GLUA, o script de mirrors trata de periodicamente sincronizar as distribuições. O processo de sincronizar é feito através do rsync em que as origem, destino e flags são feitas por um ficheiro de configuração, um por distribuição.

Resumo das configurações actuais

NAS nas.ieeta.pt com mount em /mnt/nas.ieeta.pt (NFS v3)
Serviço de sync glua-mirrors-script.service e glua-mirrors-script.service.timer
Branch a correr Versão desenvolvimento branch 3.1
Directorio /home/glua-mirrors-script/
Timer do serviço a cada 1 horas desde o ultimo run
Frequência da sincronização individual por distribuição (na sua configuração)
Email em caso de erros
Distribuições em sync Arch, CentOS, Ubuntu Releases, Ubuntu Archive

Cheat-sheet

Verificar o timer sudo systemctl list-timers
Verificar o log detalhado sudo journalctl --unit=glua-mirrors-script.service
Verificar o log resumido sudo journalctl --unit=glua-mirrors-script.service --priority=info
Verificar erros sudo journalctl --unit=glua-mirrors-script.service --priority=err

Descrição geral

O directório contém uma estrutura análoga a um sistema UNIX, com todos os binários necessários

Caminho Descrição
bin/checkmount Verifica se a NAS está montada antes de sincronizar
bin/glua-mirrors Programa principal que sincroniza os mirrors
usr/local/bin/systemd-email Script de enviar emails (quando uma distribuição fica por sincronizar)
var/log/glua-mirrors/ Contém um ficheiro por distribuição com timestamp unix com o ultimo sync com sucesso
etc/glua-mirrors/README Documentação dos ficheiros de configuração da distro
etc/glua-mirrors/distros/ Directório com ficheiros com configuração dos parâmetros de rsync para cada distribuição
etc/glua-mirrors/off/ Directório de arquivo de distribuições com a sincronização desligada
etc/systemd/system/glua-mirrors-script.service Serviço principal que corre o glua-mirrors e sincroniza tudo
etc/systemd/system/glua-mirrors-script.timer Timer que periodicamente chama o glua-mirrors-script.service
etc/systemd/system/status-email-user@.service Serviço que dispara quando glua-mirrors-script.service falha. Envia um email com um log

Instalação

  1. Clonar o repositório
  2. Ajustar os directórios nos scripts glua-mirrors e checkmount
  3. Copiar systemd-email para /usr/local/bin
  4. Ajustar o email de destino em caso de falhas de erros no script e a password do smtp no /usr/local/bin/systemd-email
  5. Copiar os ficheiros de systemd do repositório etc/systemd/system/ na /etc/ do sistema
  6. Ajustar os diretórios nos serviços do systemd glua-mirrors-script.service e status-email-user@.service. Exemplo:
    [Unit]
    (...)
    
    [Service]
    ExecStartPre=/home/glua-mirrors-script/glua-mirrors-script/bin/checkmount
    ExecStart=/home/glua-mirrors-script/glua-mirrors-script/bin/glua-mirrors
    
  7. Meter as permissões correctas
    # sudo chmod 644 /etc/systemd/system/glua-mirrors-script* /etc/systemd/system/status-email-user@.service
    
  8. Fazer reload ao systemd para reconhecer os novos serviços
    # sudo systemctl-daemon reload
    
  9. Ligar o timer
    # sudo systemctl enable glua-mirrors-script.timer
    # sudo systemctl start glua-mirrors-script.timer
    

Configuração

Configurações gerais

O ficheiro script glua-mirrors contem algumas configurações como flags globais do rsync assim como a configuração da instalação, nomeadamente:

Variavel Descrição
script_dir Directório do repositório do script
log_dir Destino dos ficheiros com timestamps
mirrors_dir Directório de destino das sincronizações
lock_file Caminho para lock file

Adicionar nova distro

Para adicionar uma nova distro basta adicionar um ficheiro .conf ao directório do repositório etc/glua-mirrors/distros/ . Há um ficheiro de documentação como usar este ficheiro em etc/glua-mirrors/README. O script de mirrors lê o directório e corre sequencialmente todos os ficheiros (cada um representa um rsync a ser feito)


Correr o script

Há duas formas de correr o script glua-mirrors. Directamente a partir do terminal ou a partir do serviço systemd.

Standalone

Actualmente o script suporta correr directamente do terminal, em que todo o output é feito para o terminal. Requer sudo.

# sudo ./glua-mirrors

Via systemd

Para correr isoladamente quando está tudo correctamente instalado é fazer start ao serviço.

# sudo systemctl start glua-mirrors-script.service

Neste caso o log é colhido pelo journalctl.


Logs

Consultar timer

Para ver a ultima vez que correu e qual a próxima é simplesmente ver os timers do systemd:

$ systemctl list-timers

Log detalhado

Para consultar os logs com nivel debug consulta-se o journalctl:

$ sudo journalctl --unit=glua-mirrors-script.service

Log resumido

$ sudo journalctl --unit=glua-mirrors-script.service --priority=info

Filtragem de erros

$ sudo journalctl --unit=glua-mirrors-script.service --priority=err