[backuppc] Génération automatique de config : script appelé par bcfg2 sur babar
This commit is contained in:
parent
3a1adaf559
commit
f587996781
1 changed files with 60 additions and 0 deletions
60
backups/generate_configs.py
Executable file
60
backups/generate_configs.py
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/bash /usr/scripts/python.sh
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Script de génération des configs backuppc sur babar
|
||||||
|
# Doit être exécuté par root.
|
||||||
|
# Plein de trucs sont hardcodés, c'est chiant, il faudrait encore
|
||||||
|
# optimiser tout ça
|
||||||
|
#
|
||||||
|
# Boucle sur les divers serveurs pour générer leurs configs dans des fichiers perl
|
||||||
|
# Fait la même chose pour les homes, en fractionnant ceux-ci suivant la config
|
||||||
|
# donnée par backups.py
|
||||||
|
#
|
||||||
|
# Auteur : Pierre-Elliott Bécue <becue@crans.org>
|
||||||
|
# Licence : GPLv3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
sys.path.append("/etc/backuppc/config/")
|
||||||
|
import backups
|
||||||
|
import os
|
||||||
|
import pwd
|
||||||
|
import grp
|
||||||
|
|
||||||
|
rootpath = "/etc/backuppc/"
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
root = pwd.getpwnam('root').pw_uid
|
||||||
|
wwwdata = grp.getgrnam("www-data").gr_gid
|
||||||
|
for hoteRsync in backups.RsyncHosts:
|
||||||
|
backup_folders = backups.RsyncHostsToBackup[hoteRsync]
|
||||||
|
backup_folders.update(backups.RsyncClassicalDirs)
|
||||||
|
for excluded in backups.RsyncHostsToExclude[hoteRsync]:
|
||||||
|
backup_folders.pop(excluded)
|
||||||
|
with open(rootpath + hoteRsync + ".pl", "w") as fichier:
|
||||||
|
fichier.write("""$Conf{RsyncShareName} = ['%(shares)s'];
|
||||||
|
$Conf{BackupFilesExclude} = {
|
||||||
|
%(excludes)s
|
||||||
|
};""" % {'shares' : ", ".join(backup_folders.keys()), 'excludes' : "\n ".join(["'%s' => ['lost+found']," % nom for nom in backup_folders.keys()])})
|
||||||
|
os.chmod(rootpath + hoteRsync + ".pl", 0644)
|
||||||
|
os.chown(rootpath + hoteRsync + ".pl", root, wwwdata)
|
||||||
|
|
||||||
|
for homeDir in backups.HomeHosts:
|
||||||
|
with open(rootpath + homeDir + ".pl", "w") as fichier:
|
||||||
|
fichier.write("""# Ces fichiers pointent vers zbee et servent à backuper les homes en séparé.
|
||||||
|
$Conf{ClientTimeout} = 86400;
|
||||||
|
|
||||||
|
$Conf{XferMethod} = 'tar';
|
||||||
|
$Conf{TarShareName} = ['/home-adh'];
|
||||||
|
$Conf{TarClientPath} = '/bin/tar';
|
||||||
|
$Conf{SshPath} = '/usr/bin/ssh';
|
||||||
|
|
||||||
|
$Conf{ClientNameAlias} = '%(myip)s';
|
||||||
|
|
||||||
|
$Conf{BackupFilesExclude} = {
|
||||||
|
'/home-adh' => [
|
||||||
|
'/lost+found',
|
||||||
|
'%(gimmemoar)s',
|
||||||
|
],
|
||||||
|
};""" % {'gimmemoar' : "', '".join(backups.HomeExclude[homeDir]), 'myip':backups.ipnfs})
|
||||||
|
os.chmod(rootpath + homeDir + ".pl", 0644)
|
||||||
|
os.chown(rootpath + homeDir + ".pl", root, wwwdata)
|
Loading…
Add table
Add a link
Reference in a new issue