Table des matières
Bacula et dépendances
backports
On va installer la version 5 qui est sur le “backports”.
# aptitude install exim4
mysql
# aptitude install mysql-server
director
# aptitude -t lenny-backports install bacula-director-mysql
console
# aptitude -t lenny-backports bacula-console
sd et fd
# aptitude -t lenny-backports install bacula-fd bacula-sd-mysql
Bacula
ipv4
Si on “blacklist ipv6” , alors “bacula” doit être forcé afin de ne fonctionner qu'en ipv4… sinon, les communications echouent silencieusement (les jobs ne se terminent jamais).
Exemple de conf, pour “bacula-dir.conf” :
# TJ --------- #DirAddress = 127.0.0.1 #DIRport = 9101 # where we listen for UA connections DirAddresses = { ipv4 = { addr = 0.0.0.0; } }
Adapter pour chaque daemon.
compiler bacula-sd
Dans la version 5.0.2 de bacula-sd, il y a un bug genant: il ne peut pas executer plusieurs “job” sur un “device”… grrrr
Donc, on doit “installer” la version 5.0.3 … et voila comment j'ai fait.
Sur Debian Lenny/Squeeze 64 bit:
Télécharger les sources “bacula-5.0.3.tar.gz” par là: http://www.bacula.org/en/?page=downloads
Déposer l'archive dans /usr/local/src
…
$ cd /usr/local/src ... $ tar xvzf bacula-5.0.3.tar.gz $ cd bacula-5.0.3
Pré-requis qui m'ont été nécessaire:
# aptitude install gcc make g++ # aptitude -t testing install libsqlite3-dev
On va compiler en “static” avec “sqlite”: mais on ne s'interesse vraiment qu'a bacula-sd
, et pas aux autres…
$ ./configure --with-sqlite3 --enable-build-dird=no --enable-static --disable-libtool CFLAGS="-O2" CXXFLAGS="-O2" $ make
Mais on n'installe pas!!!
Ce qui nous interesse est simplement là: /usr/local/src/bacula-5.0.3/src/stored/bacula-sd
$ su # /etc/init.d/bacula-sd stop # mv /usr/sbin/bacula-sd /usr/sbin/DPKG-bacula-sd # ln -s /usr/local/src/bacula-5.0.3/src/stored/bacula-sd /usr/sbin/. # /etc/init.d/bacula-sd start
Et voila. Le risque, c'est qu'au prochain upgrade, on est besoin de recréer le lien symbolique, a moins que le bug soit corrigé!
Oups
Pour “Ubuntu 6.06.2 LTS”, j'ai ça:
... Compiling bscan.c make[1]: *** No rule to make target `../cats/libbacsql.a', needed by `bscan'. Stop. make[1]: Leaving directory `/home/thierry/tmp/bacula-5.0.3/src/stored' ...
Que faire ?
Je renonce a “sqlite” et remplace par “mysql”, avec en passant:
# aptitude install libmysqlclient15-dev
Note: “bacula-sd” n'a pas besoin de base de données… donc, je m'en fous.
Webacula
installation
apache
# aptitude install apache2 libapache2-mod-php5 php5-mysql # aptitude install php5-gd
|
# a2enmod rewrite # /etc/init.d/apache2 restart
download
$ cd /usr/local/src $ wget .... webacula-5.0.2.tar.gz $ tar xvzf ....
etc…
Zend Framework
$ wget .... ZendFramework-1.10.8-minimal.tar.gz
Dans /etc/php5/apache2/php.ini
, ajouter au parametre include_path
:
; TJ ; ------------------ include_path = "/usr/local/src/ZendFramework/library" ; ------------------
Ou bien:
# cd /var/www/webacula/library # ln -s /usr/local/src/ZendFramework/library/Zend .
# /etc/init.d/apache2 restart
webacula
: copier dans /var/www/webacula
bconsole
# adduser www-data bacula
Test:
# su -l www-data -s /bin/sh -c "/usr/bin/bconsole -n -c /etc/bacula/bconsole.conf"
www
Dans /etc/apache2/sites-available
, creer le fichier 200-webacula
contenant:
Alias "/webacula" "/var/www/webacula/html" <Directory "/var/www/webacula/html"> RewriteEngine on Options FollowSymLinks AllowOverride All Order deny,allow Allow from 127.0.0.1 # your network Allow from 192.168.1.0/255.255.255.0 AuthType Basic AuthName "Webacula" #AuthUserFile /etc/apache2/conf.d/webacula.users AuthUserFile /var/www/webacula/passwd/.webacula.users # a creer! Require valid-user </Directory>
Activer:
# a2ensite 200-webacula
Modifier /etc/php5/apache2/php.ini
pour avoir:
max_execution_time = 600 memory_limit = 256M
# apache2ctl graceful
: modifier conf de
bacula-dir.conf
???
Dans /var/www/webacula/html/.htaccess
, faire en sorte d'avoir (?) :
SetEnv APPLICATION_ENV production
Dans le fichier /var/www/webacula/application/config.ini
modifier pour avoir:
... db.config.username = webacula db.config.password = <MOT_DE_PASSE> ... bacula.sudo = "" bacula.bconsole = "/usr/bin/bconsole" ...
MySQL
Dans ../install
, modifier avec le fichier webacula_mysql_create_database.sh
avec les parametres de son choix. Par exemple:
... db_user="webacula" db_password="<MOT_DE_PASSE>" ...
Et puis:
# ./webacula_mysql_create_database.sh -u root -p Enter password: Creation of webacula database succeeded.
Et aussi:
# ./webacula_mysql_make_tables.sh -u root -p Enter password: Creation of webacula MySQL tables succeeded.
Completer afin que ce compte puisse aussi modifier le “catalog” bacula ( : lire ne suffit pas ? ) :
mysql> GRANT ALL ON bacula.* TO webacula@localhost; Query OK, 0 rows affected (0.00 sec)
www passwd
Creer le fichier de mots de passe:
# mkdir passwd # cd passwd # htpasswd -c .webacula.users Webacula
Fournir le mot de passe pour le compte Webacula
(Ne pas utiliser “-c”, pour creer d'autres comptes!)
: d'aprés la doc, y a des CRON a installer
En marche
C'est mieux que rien.
DataBase
MySQL
C'est extremement lent. Il faut peut envisager autre chose que MySQL !?
tmpfs
|
J'ai mounter un fichier “tmp” pour “mysql” comme ça:
# mkdir /mnt/mysql-tmp # chmod 0777 /mnt/mysql-tmp
Dans fstab:
tmpfs /mnt/mysql-tmp tmpfs defaults,size=512M 0 0
Et puis:
# mount -a
my.cnf
Tweaks des options de MySQL ? dans my.cnf ?
$ dpkg -S my-huge.cnf
Ce que j'ai fait:
... tmpdir = /mnt/mysql-tmp # <--- seulement si on utilise "tmpfs" ... skip-locking key_buffer = 384M max_allowed_packet = 1M table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 ... [isamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M ...
Index
Ce qui a fonctionné pour moi:
$ mysql -u root -p mysql> use bacula;
Examinons avec:
mysql> show index from File;
Mais j'y comprend que dalle en fait, et donc je fais :
mysql> CREATE INDEX file_jobid_idx on File (JobId); mysql> CREATE INDEX file_jpf_idx on File (JobId, FilenameId, PathId);
Les perfs sont booooooostés. Je peus enfin restaurer des fichiers d'une grosse base.
Shrink
Lien: http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg11973.html
Il faut que j'essaye…
# /etc/bacula/scripts/make_catalog_backup --user=<USER> --password=<MOT_DE_PASSE>
DROP de la database
# mysql --user=<USER> --password=<MOT_DE_PASSE> < bacula.sql
Compression
Lien: http://edin.no-ip.com/content/bacula-backup-with-gzip-compress-on
…
Software Compression: 53.9 %
…
TLS
easy-rsa
package
On va recupere “easy-rsa” dans le package “openvpn”.
On est dans le cas où l'on n'installera pas le package “openvpn”, on veut juste “easy-rsa” :
$ dpkg --print-architecture amd64
Je suis dans un DomU 64bit, donc, on recupère le package “openvpn” qui va bien.
$ cd ~/tmp $ mkdir openvpn $ cd openvpn $ wget http://ftp.fr.debian.org/debian/pool/main/o/openvpn/openvpn_2.1~rc11-1_amd64.deb $ dpkg -x openvpn_2.1~rc11-1_amd64.deb ./
install
“easy-rsa” est dans usr/share/doc/openvpn/examples/easy-rsa/2.0/
. Donc:
$ su # mkdir /etc/bacula/easy-rsa # cp -Rp usr/share/doc/openvpn/examples/easy-rsa/2.0/. /etc/bacula/easy-rsa # cd /etc/bacula/easy-rsa/ # chown -R root: *
vars
Modifier “vars” car par defaut il contient:
# cat vars | grep -v "^#" | grep -v "^$" export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" export KEY_SIZE=1024 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain"
Il me semble judicieux d'adapter au moins:
KEY_COUNTRY KEY_PROVINCE KEY_CITY KEY_ORG KEY_EMAIL
… et peut etre:
KEY_SIZE CA_EXPIRE KEY_EXPIRE
LA PREMIERE FOIS SEULEMENT
clean-all
Faire:
# . ./vars # ./clean-all # ./build-ca
car :
- le repertoire “./keys” va etre totalement effacé ! et c'est la que seront les futures codes!!!
- le “ca” va être créé
Un répertoire “./keys” est maintenant peuplé…
Important:
Common Name : Bacula CA
Generate Diffie Hellman parameters
# ./build-dh
server
Aussi la premiere fois, il faut dire qui est le maitre des clés (en quelques sortes):
./build-key-server bacula-server Common Name : my-bacula-server.fqdn
En “CN”, le nom fqdn. svp.
droits
Faire en sorte que “bacula” est accès aux fichiers dans “keys” (pas forcément a tous).
Donc:
# cd /etc/bacula # chown -R :bacula easy-rsa # cd easy-rsa # chmod g+rxs keys
Afin d'autoriser “bacula” a lire dans le repertoire “keys” et a creer ulterieurement les fichiers avec le groupe “bacula” qui va bien.
clients
# . ./vars # ./build-key tj-debcave
Et CN = tj-debcave
On se demerde pour envoyer les fichiers suivant:
.../keys/ca.crt .../keys/tj-debcave.crt .../keys/tj-debcave.key
… a la machine “tj-debcave”.
revoke
# . ./vars # ./revoke-full tj-debcave ... <snip> ... error 23 at 0 depth lookup:certificate revoked
La dernière ligne indique simplement que le certificat génère bien une erreur, maintenant qu'il est “revoké”.
Mais en pratique, avec Bacula, ca ne fonctionne pas.
C'est avec “openvpn” que ca fonctionne en combinaison avec : “crl-verify …”
Lien: http://openvpn.net/index.php/open-source/documentation/howto.html#revoke
bacula-console
serveur
Sur le serveur, dans bacula-dir.conf
:
... <snip> ... Director { # define myself ... <snip> ... # -- TLS -- TLS Enable = yes TLS Require = no TLS CA Certificate File = /etc/bacula/easy-rsa/keys/ca.crt TLS Certificate = /etc/bacula/easy-rsa/keys/bacula.crt TLS Key = /etc/bacula/easy-rsa/keys/bacula.key # ------------ } ... <snip> ...
“TLS Require = no” afin de toléré l'absence de chiffrement… notamment a cause de “webacula”
un client
Dans bconsole.conf
:
... <snip> ... Director { ... <snip> ... address = bacula.fqdn ... <snip> ... # ---------- TLS Enable = yes TLS Require = yes TLS CA Certificate File = /etc/bacula/keys/ca.crt TLS Certificate = /etc/bacula/keys/tj-debcave.crt TLS Key = /etc/bacula/keys/tj-debcave.key # ---------- } ... <snip> ...
dans “address”, mettre l'adresse FQDN et non pas l'IP !!!
… sinon ca marche po
et faire gaffe aux droits d'accès aux fichiers.