7.1. Das lokale System mit der Univention Configuration Registry konfigurieren#
Die Univention Configuration Registry (UCR) ist ein Schlüssel-Wert-Speicher für Systemeinstellungen. Dienste und Programme lesen diese Einstellungen, um sich automatisch zu konfigurieren. UCR läuft auf jedem Nubus für UCS-System.
UCR bietet die folgenden Vorteile:
UCR verwaltet Konfigurationsdateien, ohne dass direkte Bearbeitungen erforderlich sind. Dies verhindert Fehler durch ungültige Syntax oder falsche Werte.
UCR stellt eine einheitliche Schnittstelle zur Bearbeitung von Einstellungen bereit, unabhängig vom Format der zugrunde liegenden Konfigurationsdateien.
UCR-Variablen sind unabhängig vom Format der Konfigurationsdatei. Wenn ein Paket auf ein anderes Format wechselt, aktualisieren Sie die UCR-Vorlage anstatt die Datei zu konvertieren.
Wenn sich eine Variable ändert, generiert UCR automatisch alle Konfigurationsdateien neu, die diese Variable verwenden.
So verwalten Sie UCR-Variablen:
Führen Sie auf der Befehlszeile univention-config-registry aus.
Öffnen Sie in der Management UI das Verwaltungsmodul Univention Configuration Registry.
Bei der Installation von Nubus für UCS geben Sie die Anfangseinstellungen für Pakete an, die UCR verwenden. Danach setzt das System automatisch Hunderte von UCR-Variablen.
Sie können UCR-Variablen auch in Shell-Skripten verwenden, um auf Systemeinstellungen zuzugreifen.
Variablennamen verwenden Schrägstriche zur Trennung der Teile, zum Beispiel ldap/base oder mail/relayhost. UCR-Variablen, deren Namen mit ldap beginnen, steuern den lokalen LDAP-Dienst.
Jede UCR-Variable beschreibt, was sie bewirkt.
Vorsicht
Wenn UCR eine Konfigurationsdatei über eine Vorlage verwaltet, bearbeiten Sie die Vorlage anstelle der Konfigurationsdatei direkt. UCR überschreibt alle Änderungen, die Sie an der Datei vorgenommen haben, wenn UCR die Datei das nächste Mal aus der Vorlage neu generiert. Weitere Informationen finden Sie unter UCR-Vorlagen anpassen.
7.1.1. UCR-Variablen in der Management UI verwalten#
Verwenden Sie das Verwaltungsmodul Univention Configuration Registry, um Variablen zu suchen, zu bearbeiten und zu löschen.
Die Startseite zeigt ein Suchfeld und eine Liste von Variablenkategorien. Sie können beispielsweise alle LDAP-spezifischen Einstellungen in einer Ansicht durchsuchen, siehe Abb. 7.1.
Um UCR-Variablen im Verwaltungsmodul zu verwalten, muss Ihr Konto zur Gruppe Domain Admins gehören.
Abb. 7.1 Verwaltung von UCR-Variablen in der Management UI#
7.1.1.1. Eine UCR-Variable verwalten#
So verwalten Sie UCR-Variablen im Verwaltungsmodul:
Filtern Sie im Feld Suchattribut Variablen nach Name, Wert oder Beschreibung.
Überprüfen Sie in der Ergebnistabelle, ob die Variablennamen und -werte Ihren Erwartungen entsprechen.
Um eine kurze Beschreibung einer Variable anzuzeigen, zeigen Sie auf ihren Namen, um einen Tooltip zu öffnen.
Um die vollständigen Details einer Variable anzuzeigen, wählen Sie sie aus.
Um eine Variable zu bearbeiten, klicken Sie auf ihren Namen.
Um eine Variable zu löschen, klicken Sie mit der rechten Maustaste darauf und wählen Sie Löschen.
7.1.1.2. Eine UCR-Variable erstellen#
So erstellen Sie eine UCR-Variable:
Klicken Sie auf Speichern.
Geben Sie im Feld Variable einen Namen und im Feld Wert einen Wert ein.
Klicken Sie auf Speichern.
7.1.2. UCR-Variablen auf der Befehlszeile verwalten#
Sie müssen Root-Zugriff haben, um UCR-Befehle auf der Befehlszeile auszuführen.
Führen Sie UCR-Befehle mit univention-config-registry aus. Sie können auch den Kurzbefehl ucr verwenden.
7.1.2.1. Eine UCR-Variable abfragen#
- get#
Verwenden Sie den Unterbefehl
get, um eine einzelne UCR-Variable abzufragen. Listing 7.1 zeigt ein Beispiel.
7.1.2.2. Alle UCR-Variablen anzeigen#
- dump#
Verwenden Sie den Unterbefehl
dump, um alle Variablen anzuzeigen, denen ein Wert zugewiesen ist. Listing 7.2 zeigt ein Beispiel.
7.1.2.3. Eine UCR-Variable setzen#
- set#
Verwenden Sie den Unterbefehl
set, um eine Variable zu setzen. Verwenden Sie in Variablennamen nur Buchstaben, Punkte, Ziffern, Bindestriche und Schrägstriche. Siehe Listing 7.3.Wenn die Variable bereits existiert, aktualisiert UCR ihren Wert. Andernfalls erstellt UCR die Variable.
Wenn Sie einen neuen Wert für eine UCR-Variable setzen, prüft UCR, ob der Wert mit dem Variablentyp kompatibel ist. Wenn der Wert nicht kompatibel ist, lehnt UCR den Wert ab und zeigt eine Fehlermeldung an.
Um den neuen Wert zu überprüfen, verwenden Sie
ucr getwie in Listing 7.4 gezeigt.$ univention-config-registry get VARIABLENAME
Vorsicht
Wenn Sie
--ignore-checkverwenden, überspringt UCR die Überprüfung des Variablentyps. Dies kann die Dienstkonfiguration stören oder Daten beschädigen. Verwenden Sie diese Option nur, wenn Sie die Risiken kennen.
Wenn sich eine Variable ändert, schreibt UCR alle verknüpften Konfigurationsdateien neu und zeigt die Pfade der aktualisierten Dateien in der Konsole an. UCR startet die betroffenen Dienste nicht automatisch neu. Sie müssen die Dienste neu starten, die die aktualisierten Konfigurationsdateien verwenden.
Sie können auch mehrere Variablen in einem einzigen Befehl ändern, wie in Listing 7.5 gezeigt. Wenn diese Variablen eine Konfigurationsdatei gemeinsam nutzen, schreibt UCR sie nur einmal neu.
$ univention-config-registry set \
dns/forwarder1=192.0.2.2 \
sshd/xforwarding="no" \
sshd/port=2222
UCR ermöglicht es Ihnen, einen Variablenwert bedingt zuzuweisen. Um eine Variable nur dann zu setzen, wenn sie noch nicht existiert, verwenden Sie ein Fragezeichen (?) anstelle eines Gleichheitszeichens (=), wie in Listing 7.6 gezeigt.
$ univention-config-registry set dns/forwarder1?192.0.2.2
7.1.2.4. Nach Variablen suchen#
- search#
Verwenden Sie den Unterbefehl
search, um eine Variable zu suchen. Listing 7.7 zeigt eine Suche nach Variablennamen, dieldapenthalten, und deren aktuelle Werte. Der Unterbefehlsearchunterstützt reguläre Ausdrücke. Die vollständige Syntax finden Sie unterre — Regular expression operationsin Python 3.12 documentation [9].$ univention-config-registry search ldap
Um nach dem Wert zu suchen, siehe Listing 7.8, das alle Variablen auflistet, die auf
primary.example.comgesetzt sind.$ univention-config-registry search --value primary.example.com
7.1.2.5. Eine UCR-Variable löschen#
- unset#
Verwenden Sie den Unterbefehl
unset, um eine Variable zu löschen. Listing 7.9 zeigt ein Beispiel, das die Variabledns/forwarder2löscht. Sie können auch mehrere Variablen in einem Befehl löschen.
7.1.2.6. Eine Konfigurationsdatei aus der Vorlage neu generieren#
- commit#
Verwenden Sie den Unterbefehl
commit, um eine Konfigurationsdatei aus ihrer Vorlage neu zu generieren. Listing 7.10 zeigt ein Beispiel, das/etc/samba/smb.confneu generiert. Verwenden Sie den Unterbefehlcommit, wenn Sie eine Vorlagendatei manuell bearbeiten, nicht wenn Sie den Wert eine UCR-Variable ändern.Wenn Sie ucr commit ohne Dateinamen ausführen, erstellt UCR alle verwalteten Dateien aus ihren Vorlagen neu. Dieser Befehl ist nach der Wiederherstellung einer Sicherungskopie oder bei der Behebung von Problemen mit Vorlagen nützlich.
$ univention-config-registry commit /etc/samba/smb.conf
Um zu überprüfen, ob UCR die Datei neu generiert hat, prüfen Sie den Inhalt oder die Änderungszeit der Datei, wie in Listing 7.11 gezeigt.
7.1.2.7. UCR-Variablen in Shell-Skripten verwenden#
- shell#
Verwenden Sie den Unterbefehl
shell, um UCR-Variablen und ihre aktuellen Werte im Shell-Skript-Format anzuzeigen, wie in Listing 7.12 gezeigt.$ univention-config-registry shell ldap/server/name
UCR wendet die folgenden zwei Konvertierungen auf die Ausgabe an:
Schrägstriche in Variablennamen werden zu Unterstrichen.
UCR maskiert Zeichen mit besonderer Bedeutung in der Shell, wie Leerzeichen, Anführungszeichen und Dollarzeichen, um eine unbeabsichtigte Interpretation durch die Shell zu verhindern.
Um UCR-Variablen als Umgebungsvariablen in einem Shell-Skript zu verwenden, leiten Sie die Ausgabe an eval weiter. Siehe Listing 7.13 für ein Beispiel.
$ eval "$(univention-config-registry shell ldap/server/name)"
$ echo "$ldap_server_name"
primary.example.com
7.1.3. Rangfolge von UCR-Variablen#
UCR wendet Variablenwerte in der Reihenfolge dieser Prioritäten an, von der niedrigsten zur höchsten:
- Lokale Variablen
Variablen, die Sie direkt auf dem System mit
ucr setsetzen.- Richtlinienvariablen
Variablen, die vom Verzeichnisdienst verteilt werden und lokale Variablen überschreiben. Wenn eine Richtlinie mit höherer Priorität die von Ihnen gesetzte Variable bereits überschreibt, zeigt UCR eine Warnung an.
- Variablen auf zeitgesteuerter Ebene
Variablen, die nur für einen bestimmten Zeitraum gültig sind. Setzen Sie sie mit
--schedule. Nubus für UCS verwendet die zeitgesteuerte Ebene für zeitbasierte Automatisierung.- Variablen auf erzwungener Ebene
Variablen mit der höchsten Priorität. Sie überschreiben Richtlinien- und zeitgesteuerte Variablen. Setzen Sie sie mit
--force. Siehe Listing 7.14 für ein Beispiel.$ univention-config-registry set --force mail/messagesizelimit=1000000
7.1.4. UCR-Vorlagen anpassen#
Eine UCR-Vorlage ist eine Konfigurationsdatei mit Markierungen. UCR ersetzt diese Markierungen durch Variablenwerte, wenn es die Datei generiert.
Sie können in UCR-Vorlagen eingebetteten Python-Code verwenden. Nutzen Sie ihn, um Bedingungen hinzuzufügen oder Werte aus anderen Variablen zu berechnen.
UCR speichert Vorlagen in /etc/univention/templates/files/ und verwendet den absoluten Pfad der Konfigurationsdatei als Dateiname für die Vorlage. Die Vorlage für /etc/issue befindet sich beispielsweise unter /etc/univention/templates/files/etc/issue.
Dateien für UCR-Vorlagen müssen Unix-Zeilenenden verwenden: nur LF, kein CRLF.
Vorsicht
Wenn Sie eine Vorlagendatei unter Windows bearbeiten, kann der Editor CRLF-Zeilenenden einfügen, die die Verarbeitung in UCR stören. Bevor Sie die Vorlage bearbeiten, führen Sie dos2unix FILENAME aus, um sie in das Unix-Format zu konvertieren.
Nubus für UCS-Pakete werden mit UCR-Vorlagen geliefert. Wenn Sie ein Paket aktualisieren, prüft UCR, ob Sie die Vorlagen geändert haben. Wenn Sie eine Vorlage geändert haben, bewahrt UCR Ihre Änderungen. Es speichert die aktualisierte Paketvorlage mit dem Suffix .dpkg-new oder .dpkg-dist im selben Verzeichnis und schreibt eine Meldung in /var/log/univention/actualise.log.
7.1.4.1. UCR-Variablen in Vorlagen referenzieren#
Um eine UCR-Variable in einer Vorlage zu referenzieren, verwenden Sie die Markierung @%@. Listing 7.15 zeigt die X11-Weiterleitungsoption in /etc/ssh/sshd_config.
X11Forwarding @%@sshd/xforwarding@%@
UCR erkennt Variablenreferenzen in Vorlagen, die die Markierung @%@ verwenden. Wenn Ihre Vorlage eingebetteten Python-Code verwendet, müssen Sie zusätzliche Variablen explizit registrieren. Weitere Informationen finden Sie unter Eingebetteten Python-Code in Vorlagen integrieren.
7.1.4.2. Eingebetteten Python-Code in Vorlagen integrieren#
Sie können Python-Codeblöcke, die durch @!@ begrenzt sind, einbetten, um Bedingungen hinzuzufügen oder Werte aus anderen Variablen zu berechnen. Listing 7.16 zeigt, wie eingebetteter Python-Code in einer Vorlage Einstellungen für SSL aus UCR-Variablen konfiguriert.
@!@
if configRegistry.get('apache2/ssl/certificate'):
print('SSLCertificateFile %s' %
configRegistry['apache2/ssl/certificate'])
@!@
UCR fügt die Ausgabe von print-Anweisungen in die generierte Konfigurationsdatei ein. Listing 7.17 zeigt, wie auf UCR-Daten über das ConfigRegistry-Objekt zugegriffen wird.
Weitere Informationen zur Registrierung von Variablen durch UCR finden Sie unter UCR-Variablen in Vorlagen referenzieren.
@!@
if configRegistry.get('version/version') and \
configRegistry.get('version/patchlevel'):
print('UCS %(version/version)s-%(version/patchlevel)s' %
configRegistry)
@!@
7.1.4.3. UCR-Variablen in einer Info-Datei registrieren#
So registrieren Sie UCR-Variablen in einer Info-Datei:
Erstellen Sie eine Info-Datei unter
/etc/univention/templates/info/. Benennen Sie die Datei nach dem Paket, zum BeispielPACKAGENAME.info.Listen Sie in der Info-Datei die UCR-Variablen auf, die Ihre Vorlage verwendet. Das Format der Info-Datei ist unter debian/package.univention-config-registry in Univention Developer Reference [6] beschrieben.
Wenn Sie Python-Code hinzufügen, der zusätzliche Variablen verwendet, fügen Sie diese entweder zur vorhandenen
.info-Datei hinzu oder erstellen Sie eine neue Datei für dieses Paket.Führen Sie ucr update aus, um die Änderungen anzuwenden.
7.1.5. UCR-Variablen mit Richtlinien konfigurieren#
Einige UCR-Einstellungen gelten für ein einzelnes System, wie zum Beispiel der Rechnername. Andere UCR-Einstellungen gelten für alle Systeme in der Domäne, wie zum Beispiel die Einstellung des E-Mail Relay-Hosts. Verwenden Sie die UCR-Richtlinie im Verwaltungsmodul Policies, um Variablen zu gruppieren und mehreren Computern zuzuweisen.
Abb. 7.2 Richtlinienbasierte Konfiguration der Apache-Startseite und erzwungenes HTTPS#
So erstellen und weisen Sie eine UCR-Richtlinie zu:
Öffnen Sie das Richtlinien Verwaltungsmodul in der Management UI.
Klicken Sie Hinzufügen und wählen Sie Richtlinie: Univention Configuration Registry.
Geben Sie einen Name für die Richtlinie ein.
Fügen Sie im Feld Variable mindestens einen Variablennamen hinzu und geben Sie im Feld Wert einen Wert ein. Ein Beispiel finden Sie unter Abb. 7.2.
Klicken Sie auf Richtlinie erstellen, um die Richtlinie zu erstellen.
Weisen Sie die Richtlinie einem Computerobjekt, einem Container oder einer Organisationseinheit (OU) zu. Weitere Informationen finden Sie unter Richtlinien zuweisen.
UCR-Richtlinien schreiben Werte nicht direkt auf das System. Stattdessen schreibt Nubus für UCS die Werte in das LDAP-Objekt des Computers. Der Computer liest die Werte bei der nächsten Synchronisierung. Die UCR-Variable ldap/policy/cron steuert das Synchronisierungsintervall. Das Standardintervall beträgt eine Stunde.
Um zu überprüfen, ob UCR die Richtlinie nach der nächsten Synchronisierung angewendet hat, führen Sie ucr dump auf dem Zielsystem aus. Ein Beispiel finden Sie unter Listing 7.18. Informationen dazu, wie UCR Variablen priorisiert, finden Sie unter Rangfolge von UCR-Variablen.
$ univention-config-registry dump | grep VARIABLENAME
Siehe auch
- Richtlinien Modul
in Nubus Handbuch 1.x [4] für Referenzinformationen zum Verwaltungsmodul Policies
- Richtlinien zuweisen
in Nubus Handbuch 1.x [4] für Informationen zum Zuweisen von Richtlinien.