Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[Gelöst] Verwendung eigener Variablen in Bacula-Config

Alles rund um die Server (Web-, Mail-, Datenbank-, Datenaustausch-, etc.) die man unter Linux betreiben kann

Moderator: Moderatoren

Antworten
Benutzeravatar
gehrke
Moderator
Moderator
Beiträge: 1882
Registriert: 10. Nov 2012, 11:00
Wohnort: Münsterland

[Gelöst] Verwendung eigener Variablen in Bacula-Config

Beitrag von gehrke » 9. Feb 2019, 10:20

Moin *,

ich muss mal dringend meine Bacula-Konfiguration konsolidieren. Dafür brauche ich die Möglichkeit, selbstdefinierte Variablen in der Config zu verwenden. Ich finde aber leider nicht den richtigen Weg.

Zuletzt habe ich sowas hier versucht:

Code: Alles auswählen

@|"sh -c 'export target=j11'"

Device {
  Name = disk1-${target}
  [...]
Das scheitert kläglich:

Code: Alles auswählen

Feb 08 22:59:29 bacula.gehrke.local bacula-sd[16751]: 08-Feb 22:59 bacula-sd: ERROR TERMINATION at parse_conf.c:368
Feb 08 22:59:29 bacula.gehrke.local bacula-sd[16751]: Config error: Illegal character "$" in name.
Feb 08 22:59:29 bacula.gehrke.local bacula-sd[16751]: : line 4, col 16 of file |sh -c 'cat /etc/bacula/client-sd-*.conf'
Feb 08 22:59:29 bacula.gehrke.local bacula-sd[16751]: Name = disk1-${target}
Feb 08 22:59:29 bacula.gehrke.local systemd[1]: bacula-sd.service: main process exited, code=exited, status=1/FAILURE
Kann jemand helfen?
TNX

Glückauf, gehrke

Werbung:
Benutzeravatar
gehrke
Moderator
Moderator
Beiträge: 1882
Registriert: 10. Nov 2012, 11:00
Wohnort: Münsterland

Re: Verwendung eigener Variablen in Bacula-Config

Beitrag von gehrke » 9. Feb 2019, 16:50

Ich habe mal massiv konsolidiert und vereinfacht. Zwar habe ich keine Möglichkeit gefunden, eigene Variablen direkt zu definieren, aber mein Ziel auf anderem Wege erreicht.

Eine Lösung hierzu hatte Michael Stapelberg schon 2007 erarbeitet und dankenswerterweise veröffentlicht:
https://michael.stapelberg.de/posts/200 ... la_config/

Meine Lösung für die einzelnen Clients setzt sowohl bei Director- als auch bei Storage-Config an. Hier mal der Einfachheit halber nur die kleinere Fassung für den Storage.

Am Ende der bacula-sd.conf wird für jeden Client eine eigene Config eingelesen:

Code: Alles auswählen

@|"sh -c 'cat /etc/bacula/client-sd-*.conf'"
Es existiert ein Template, welches die gewünschten Variablen via Platzhalter (im Beispiel '%target%') referenziert:

Code: Alles auswählen

$ cat client-sd.inc 
Device {
  Name = disk1-%target%
  Media Type = File1
  Archive Device = /backup-pool/disk1/%target%
  @/etc/bacula/deviceDefinition.conf
}
Device {
  Name = disk2-%target%
  Media Type = File2
  Archive Device = /backup-pool/disk2/%target%
  @/etc/bacula/deviceDefinition.conf
}
Für jeden Client existiert ein Wrapper, welcher das Template aufruft und die Parameter per 'sed' setzt. Beispiel Client 'j10':

Code: Alles auswählen

$ cat client-sd-j10.conf 
@"|sed 's/%target%/j10/g' /etc/bacula/client-sd.inc"
Das war es schon. Erweiterungen am Code erfolgen nun nur noch einmalig im Template, die Anzahl der Config-Zeilen ist massiv gesunken und das Anlegen eines neuen Clients sind nur noch zwei Einzeiler. Bin zufrieden...

Antworten