crans_bcfg2/etc/python/backups.py
2014-04-18 03:31:23 +02:00

131 lines
2.8 KiB
Python

#/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Fichier python de gestion des backups
#
# Auteur : Pierre-Elliott Bécue <becue@crans.org>
# Licence : GPLv3
# Ne faites jamais include("backups") dans ce fichier !
# Le cas échéant, vous allez faire un include cyclique (l'un des deux
# est un lien symbolique de l'autre).
import collections
# Liste des hosts, pourrait éventuellement être calculée au runtime
# via les MetaData
RsyncHosts = [
"asterisk",
"babar",
"baldrick",
"bcfg2",
"cas",
"charybde",
"dhcp",
"eap",
"ethercalc",
'ft',
'fz',
"geet",
"horde",
"irc",
"isc",
"kdell",
"kenobi",
"komaz",
"nat64",
"nem",
"news",
"niomniom",
"o2",
"owl",
"pea",
"radius",
"redisdead",
"rezosup",
"roundcube",
"routeur",
"sable",
"sogo",
"thot",
"titanic",
"tracker",
"vert",
# "vo", trop de bordel, rien de critique
"xmpp",
"ytrap-llatsni",
"zamok",
"zbee",
]
# RsyncHostsToBackup : dictionnaire d'hôtes de la forme
# { "hote" : {
# 'nomdepartochecool' : 'emplacement de partoche cool',
# }
# }
# Configs courantes pour les partitions à copier
RsyncClassicalDirs = {
'slash' : '/',
'var' : '/var',
}
# Configs spécifiques des partitions à copier pour chaque hôte
# copié par rsync
RsyncHostsToBackup = collections.defaultdict(dict)
RsyncHostsToBackup['ft'] = {
'pve' : '/etc/pve',
}
RsyncHostsToBackup['fz'] = {
'pve' : '/etc/pve',
}
RsyncHostsToBackup['geet'] = {
'git' : '/git',
'gitlab' : '/gitlab',
}
RsyncHostsToBackup['kdell'] = {
'pve' : '/etc/pve',
}
RsyncHostsToBackup['news'] = {
'news-spool' : '/var/spool/news',
}
RsyncHostsToBackup['niomniom'] = {
'www' : '/var/local',
}
RsyncHostsToBackup['redisdead'] = {
'mailman' : '/var/lib/mailman',
}
RsyncHostsToBackup['thot'] = {
'boot' : '/boot',
}
RsyncHostsToBackup['zamok'] = {
'boot' : '/boot',
}
# Certaines machines n'ont pas de /var à part.
# On vire avec ce dico
RsyncHostsToExclude = collections.defaultdict(list)
RsyncHostsToExclude["asterisk"] = [
"var",
]
RsyncHostsToExclude["dhcp"] = [
"var",
]
RsyncHostsToExclude["ytrap-llatsni"] = [
"var",
]
# Génération des 26 partitions de backup pour les homes.
HomeHosts = ["home-" + lettre for lettre in map(chr, range(97, 123))]
# Oui, c'est gore, vu que /home n'est qu'une seule partition physique,
# il faut enlever à la main chaque lettre de l'alphabet. :'(
HomeExclude = { "home-" + lettre : [ "/" + caractere + "*" for caractere in map(chr, range(97, 123)) if caractere != lettre] for lettre in map(chr, range(97, 123))}