{{tag>sysadmin backup bareos}}
====== Notes sur la syntaxe de configuration de Bareos ======
Pour des raisons de lisibilité et de modularité, la configuration est repartie sur un ensemble de fichiers textes **encodés en UTF-8**. Les fichiers de configuration permettent de définir des **ressources** à partir des types existants.
* Les lignes vides sont ignorées.
* Les lignes commençant par le caractère **''#''** sont des commentaires.
* Le caractère **'';''** termine une déclaration, il n'est pas nécessaire lorsque la directive est seule sur une ligne.
* Il est possible de scinder une configuration volumineuse et d'inclure les fichiers via la syntaxe ''**@/path/filename.conf**'', les caractères spéciaux sont acceptés ''**@/path/*.conf**''
===== Les ressources =====
Une ressource est définie par un type suivi d'accolades groupant les directives. Ci dessous un exemple illustrant la syntaxe:
RSType {
directive 1 = valeur1
directive 2 = valeur2
..
directive n = valeurN
}
Ci-après un exemple plus concret avec une ressource de type Job:
Job {
Name = "backup-poseidon"
JobDefs = "DefaultJob"
Client = "bareos-fd"
}
Chaque définition de ressource doit comporter la directive **name** dont la valeur **unique** permet son identification. Par convention on utilise comme nom du fichier de configuration, le nom de la ressource (directive **Name**). Par convention on suffixe les nom avec:
* **-fd** ((**F**ile **D**aemon)) pour les clients
* **-sd** ((**S**torage **D**aemon)) pour les machines de stockage
* **-dir** ((**Dir**ector)) pour le director
Ces conventions sont particulièrement appréciables lors de la relecture des logs.
Le tableau ci-dessous liste l'ensemble des types de ressources de Bareos. Il indique quelles ressources doivent être définies pour chaque service.
^ Ressource | Director | Client | Storage | Console |
| Autochanger | | | X | |
| Catalog | X | | | |
| Client | X | X | | |
| Console | X | | | X |
| Device | | | X | |
| Director | X | X | X | X |
| FileSet | X | | | |
| Job | X | | | |
| JobDefs | X | | | |
| Message | X | X | X | |
| NDMP | | | X | |
| Pool | X | | | |
| Profile | X | | | |
| Schedule | X | | | |
| Storage | X | | X | |
==== Suppression de ressource ====
La documentation officielle déconseille la suppression de ressource qui peut entraîner des risques d'objets orphelins dans le catalogue. Une ressource non utilisée peut être désactivée via la directive:
Enable = no
===== Les directives =====
Chaque directive contenue dans la définition de la ressource se compose d'un mot clé (Ressource Directive Keyword) à gauche du caractère '=' est d'une valeur (Ressource Directive Value).
Pour le mot clé (label) de la directive, les espaces et la casse de caractère ne sont pas significatifs si bien que **JobDefs**, **job defs**, ou **Job Defs** sont strictement équivalents, ils désignent la même directive.
Les espaces après le signe égal et avant le premier caractère sont ignorés également cependant les suivants seront significatifs et peuvent exiger des échappements via les doubles guillemets.
===== Les types de données des directives =====
Différents type de données existent et peuvent être affectés aux directives. La liste exhaustive est présente dans la documentation officielle.
==== acl ====
Les **acl** permettent de définir des autorisations d'accès. Elles exploitent les expressions rationnelles séparées par des virgules et les mots clés (tel que *all*). Si le caractère '!' est présent il représente la négation.
Pour autoriser toutes les commandes sauf sqlquery et les commandes commençant par del:
command acl = !sqlquery, !del*, *all*
La syntaxe ci-dessous est strictement équivalente:
command acl = !sqlquery
command acl = !del*
command acl = *all*
L'évaluation des acl est stoppée dès la première correspondance vraie, il faut donc toujours placer le mot clé *all* en dernier pour que toutes les parties de l'expression soient correctement évaluées.
==== name ====
Caractères alphanumériques, underscore, doit commencer par une lettre et comporter un maximum de 127 caractères. Respecter les suffixes conventionnels
==== strname ====
Similaire à name doit cependant être entre définit entre guillemets et peut contenir des caractères comme les espaces.
==== integer/long integer ====
Attention à ne pas placer les nombres entre guillemets.
==== password ====
Donnée de type mot de passe, stockée par Bareos en tant que hash MD5.
==== path ====
Un chemin peut être placé entre guillemets ou non, peut désigner un fichier ou un répertoire.
==== speed ====
Le paramètre **speed** peut être spécifié avec différentes unités: k/s, kb/s, m/s, mb/s. Ne pas placer entre guillemets.
==== string ====
Une chaîne peut contenir tous types de caractères (s'ils sont correctement échappés) et peut avoir une longueur quelconque. Les caractères d'espacement entre le symbole d'affectation '=' et le premier caractère seront ignorés. Les autres espacements, s'ils sont présents, devraient être significatifs et devraient donc être échappés (placés entre guillemets).
==== size ====
Par défaut un nombre d'octets, il peut être immédiatement suivi (sans espace) d'une des unités suivantes: k, kb, m, mb, g, gb. Ne pas placer entre guillemets.
==== time ====
Période de temps en secondes définie en deux partie: nombre suivi d'un modificateur: seconds, minutes, hours, days, weeks, months, quarters, years
Si la directive sert à définir un nombre, le nombre ne doit pas être encadré par des guillemets. Cela reste vrai même lorsqu'il est définit avec ses unités comme **365 days** .
==== booléens ====
**yes** ou **no** et leur équivalent respectif **true** et **false**.
===== Développement des variables =====
Selon les directives ou les commandes, différents jeux de variables sont disponibles. Ils sont détaillés dans la documentation officielle.
L'étiquetage des volumes (labeling) peut utiliser les variables internes de Bareos ou les variables d'environnement également disponibles.
^ Variable Interne ^ Description |
| $Year | L'année |
| $Month | Le mois, formaté en nombre [1-12] |
| $Day | Le jour formaté en nombre [1-31] |
| $Hour | L'heure, formatée en nombre [0-24] |
| $Minute | Minutes, formatées en nombre [0-59] |
| $Second | Secondes, formatées en nombre [0-59] |
| $WeekDay | jour de la semaine, formaté en nombre 0 pour dimanche [0-6] |
| $Job | Nom de la tache |
| $Dir | Nom du Director |
| $Level | Level de la tache |
| $Type | Type de la tache |
| $JobId | Identifiant de la tache |
| $JobName | Nom unique de la tache |
| $Storage | Nom du Storage Daemon |
| $Client | Nom du client |
| $NumVols | Nombre de volumes du pool |
| $Pool | Nom du Pool |
| $Catalog | Nom du Catalogue |
| $MediaType | Type du media |
Les commandes Bareos tel que **Autochanger**, **Mount**, **runScript**, **Mail** ou **Operator** utilisent des variables spécifiques.
===== Mots de passe et authentification =====
La communication entre les daemons est soumise à authentification. Dans la plupart des cas, c'est un couple (nom, mot de passe) en texte plein. La configuration par défaut génère automatiquement une authentification correcte entre les daemons avec des mots de passes générés aléatoirement. Si les fichiers de configuration des daemons sont modifiés, il faut s'assurer de les garder consistants.
{{config-bareos.png}}
Dans la configuration du daemon Director, les ressources Director, Storage, Client sont définies avec leur couple (nom, mot de passe). Le schéma montre bien qu'ensuite pour la configuration de chaque daemon, il faudra indiquer le nom du Director avec lequel il communique et faire correspondre le mot de passe
* La Console accède au Director, il faut donc définir dans la configuration de la Console le nom du Director ainsi que le mot de passe du Director.
* Le Director accède aux daemons de stockage.Chaque daemon de stockage est définit dans la configuration du Director par une ressource Storage avec un nom et un mot de passe. Dans la configuration de chaque daemon Storage, on renseigne entre autre le mot de passe définit dans la configuration du Director et le nom du Director autorisé à accéder au service.
* Le Director accède aux clients. Chaque client est définit dans la configuration du Director par une ressource Client avec un nom et un mot de passe. Dans la configuration de chaque file daemon, on renseigne entre autre le mot de passe définit dans la configuration du Director et le nom du Director autorisé à accéder au service.
Pour une architecture distribuée sur un réseau non sûr, il est possible de chiffrer les échanges entre daemons.
===== Test de la configuration =====
Pour tester la syntaxe des fichiers de configuration après modification
# Tester la configuration du Director
su bareos -s /bin/sh -c "/usr/sbin/bareos-dir -t"
# Tester la configuration du storage daemon
su bareos -s /bin/sh -c "/usr/sbin/bareos-sd -t"
# Test le client (file daemon)
bareos-fd -t
# Test de la configuration de la console
bconsole -t
bareos-tray-monitor -t