Dienstkonfiguration

Die Dienstkonfiguration zeichnet sich dadurch aus, dass sie Konfigurationen von verwendeten Softwareprodukten, z.B. des E-Mail-Services, definiert. Sie ist eine Konfigurationsumgebung, die mit der Verwaltung von schon eingerichteten Servern einhergeht.

Das folgende Schaubild zeigt die wesentlichen Basisbestandteile eines Konfigurationsprozesses. Die darin angeführten Nummern werden im Weiteren näher erläutert.

Basiskonfiguration - Übersicht
  1. LDAP:
    Jede finale Konfiguration enthält Daten, die im LDAP abgelegt sind. LDAP-Dienst ist physisch in der BAS integriert und beinhaltet neben den für Samba relevanten Daten auch die Schemaerweiterungen von CoreBiz Engineering. Die weiteren Komponenten können auf allen Linux-basierten Systemen laufen, auch auf der BAS!

  2. .senv-Dateien:
    Diese System-Environment-Konfigurationsdateien enthalten primär jene Daten, die notwendig sind, um wichtige Dienste wie den LDAP-Server initial überhaupt erreichen zu können. Darunter fallen Hostnamen und IP-Adressen. Hier können auch allgemeine Daten wie eine Zeitzone definiert werden. Über .senv-Konfigurationen können existierende Variablen abgeleitet werden, um anwendungsspezifische Konfigurationen zu ermöglichen. Definitionen aus dem LDAP-System haben in der Regel eine höhere Priorität als die in .senv-Dateien.

  3. corebiz_env.pl:
    Das Perl-Skript corebiz_env.pl ist eines von jenen durch den Administrator bedienten Skripten, die für eine Konfiguration notwendig sind. Das Hauptaugenmerk dieses Skripts ist es, für den jeweiligen Service relevante Daten von .senv-Dateien und dem LDAP zu lesen, diese zu aggregieren und für weitere Prozesse in Form von Variablen und Flags bereitzustellen. Überdies kann sich der Administrator mithilfe spezieller Abfragen den Ursprung von Konfigurationsdaten anzeigen lassen. In speziellen Fällen erzeugt das Skript auch komplette Konfigurationsdateien und legt diese in /etc/corebiz/generated/ ab.

    Beispielausgabe
    /etc/corebiz/corebiz_env.pl --namespace | less
    
              cfSplayTime -> /etc/corebiz/environment/CB_Network.senv     (0)
           cfs2_serviceIP -> LDAP announceSambaServiceEntries samba       (172.29.90.63)
            cfs_serviceIP -> LDAP announceSambaServiceEntries samba       (172.29.90.246)
    clearTmpDirsOnStartup -> /etc/corebiz/environment/CB_Common.senv      (FALSE)
     clobberKernelModules -> /etc/corebiz/environment/CB_Common.senv      (no)
               coreBizKey -> /etc/corebiz/environment/CB_Ldap.senv        (/WsJ+OPRDyliuPIEbs6UkA)
      coreBizSystemSerial -> LDAP getSystemProfile coreboso-v1            (E35B3C-AD0993-3B48DF-3223D6)
           cupsMaxClients -> /etc/corebiz/environment/CB_Common.senv      (1000)
               cupsServer -> /etc/corebiz/environment/CB_Network.senv     ('coreboso-bas.coreboso.de')
            customIndexEq -> /etc/corebiz/environment/CB_Ldap.senv        (' ')
         customIndexSubEq -> /etc/corebiz/environment/CB_Ldap.senv        (' ')
       defaultComputerGid -> /etc/corebiz/environment/CB_Common.senv      (515)
           defaultGateway -> LDAP announceGatewayServiceEntries default gw SERVICE=gateway,OU=System,OU=muc,DC=coreboso,DC=de     (172.29.90.1)
       defaultIntlCharset -> /etc/corebiz/environment/CB_Common.senv      (ISO-8859-1)
        defaultLoginShell -> /etc/corebiz/environment/CB_Common.senv      (/bin/bash)
  4. Shell:
    Die Shell des Servers oder Clients stellt dem Administrator bzw. dem Benutzer bei Linux-Clients konsistente Umgebungsdaten für seine Arbeit bereit. Ein Hilfs-Skript namens corebiz_env.rc, das in die .profile oder .bashrc eingebunden wird, sorgt dafür, dass bei der Anmeldung des Admins oder des Benutzers an der Shell notwendige Umgebungsvariablen zur Verfügung stehen. Abhängig von der Konfiguration besteht die Möglichkeit, für reguläre Benutzer eine Roaming-Synchronisierung über das Skript roamingSync.sh, welches nicht extra eingezeichnet ist, durchzuführen.

  5. Konfigurationsregeln:
    Da die zu erstellenden Konfigurationen unterschiedlich sind und auch unterschiedliche Regeln benötigen, gibt es Konfigurationsdateien, die diese Regeln definieren. Diese Regeln legen beispielsweise fest, wohin eine fertige Konfiguration geschrieben wird, wie mit einer fehlenden Konfiguration umgegangen werden soll oder welche Zugriffsberechtigung eine Konfiguration erhält. Darüber hinaus können auch Aktionen ausgeführt werden, etwa um Dienste zu starten oder zu stoppen. Die zugrunde liegende Sprache (CoreBiz Configuration Language) erlaubt komplexe Definitionen und Abläufe. Für die Konfigurationsregeln wird ein eigenes Handbuch bereitgestellt.

    Beispielregel
    /etc/nsswitch.conf {
        if StandAloneConf {
            kv set "passwd:" "compat";
            kv set "group:"  "compat";
            kv set "shadow:" "compat";
        }
        else if SSSD {
            kv set "passwd:" "compat sss";
            kv set "group:"  "compat sss";
            kv set "shadow:" "compat sss";
        }
        else {
            kv set "passwd:" "compat winbind";
            kv set "group:"  "compat winbind";
            kv set "shadow:" "compat";
        }
        plain deletelines "sudoers:.*sss";
    }
  6. Config Manager:
    Der Config-Manager cbCfgManager wird meist als Teil von cbConfig aufgerufen und ist ein weiteres Skript, das vom Administrator bedient wird. Er liest Daten automatisiert über das Skript corebiz_env.pl. Aus diesen Grunddaten und den Regeln erstellt er eine auf den Service zugeschnittene Konfiguration. Diese Konfiguration wird an dem in den Regeln definierten Ort – im Regelfall /etc/xxx oder /etc/yyy usw. – zur weiteren Verwendung geschrieben. Der Configuration Manager ist standardmäßig passiv. Das bedeutet, dass zunächst eine Zielkonfiguration zur Kontrolle ausgegeben wird. Das Ausgeben der Zielkonfiguration erfolgt im Diff-Format, um Änderungen einfach nachzuvollziehen. Erst durch den Ausführungsparameter -a wird diese Konfiguration final auch geschrieben.

    Beispielausgabe im Diff Format
    2026-03-02 09:50:03 edited(631): WARNING /etc/nsswitch.conf: Content diff:
    --- /etc/nsswitch.conf	2026-03-02 09:49:58.359166 +0100
    +++ /etc/nsswitch.conf	2026-03-02 09:50:03.932418 +0100
    @@ -4,8 +4,8 @@
     # If you have the `glibc-doc-reference' and `info' packages installed, try:
     # `info libc "Name Service Switch"' for information about this file.
    
    -passwd:         compat
    -group:          compat
    +passwd:         compat winbind
    +group:          compat winbind
     shadow:         compat
     gshadow:        files systemd
  7. Fertige Konfiguration:
    Die Konfigurationsdateien ähneln in gewisser Weise der Microsoft Registry, sind jedoch deutlich einfacher zu lesen und zu handhaben. Werden Änderungen geschrieben, sind nur die geänderten Elemente davon betroffen. Alle anderen Bestandteile der Konfiguration bleiben davon unberührt.

    Beispielkonfiguration
    # /etc/nsswitch.conf
    #
    # Example configuration of GNU Name Service Switch functionality.
    # If you have the `glibc-doc-reference' and `info' packages installed, try:
    # `info libc "Name Service Switch"' for information about this file.
    
    passwd:         compat winbind
    group:          compat winbind
    shadow:         compat
    gshadow:        files
    
    hosts:          files dns
    networks:       files
    
    protocols:      db files
    services:       db files
    ethers:         db files
    rpc:            db files
    
    netgroup:       nis
  8. Auszulösende Aktionen:
    Nach Fertigstellung einer Konfiguration kann der Config-Manager auch die in den Regeln definierten Aktionen ausführen. Das ist beispielsweise dann hilfreich, wenn Dienste neu gestartet werden müssen, um eine geänderte Konfiguration zu aktivieren.

  9. Software:
    Nachdem eine Konfiguration erstellt wurde, kann der Dienst darauf zugreifen, um sich entsprechend zu parametrisieren.