Linux Kung Fu Style: Einstellungen synchronisieren

Eine der besten Eigenschaften von Linux und ähnlichen Betriebssystemen ist ihre umfassende Anpassung. Wenn Ihnen etwas nicht gefällt, ist die Wahrscheinlichkeit hoch, dass Sie es leicht ändern können, indem Sie eine Datei optimieren. Betrachten Sie beispielsweise bash, eine Befehlsshell, die in jeder Hinsicht beliebt ist. Wenn Sie die Eingabeaufforderung ändern müssen, ist dies durchaus möglich. Wenn Sie möchten, dass ein Schlüssel Tab



die automatische Vervollständigung von Dateinamen ohne Berücksichtigung der Groß- und Kleinschreibung ermöglicht, ist dies ebenfalls kein Problem. In der Regel werden diese Einstellungen in einer der sogenannten "Profildateien" vorgenommen, die .bashrc



sich im Home-Verzeichnis des Benutzers befinden. Wenn jemand an einem einzelnen Computer arbeitet, hat er keine Probleme mit den Einstellungen. Es trägt zur Datei bei







.bashrc



und in anderen ähnlichen Dateien die erforderlichen Änderungen, passt das System für sich selbst an und arbeitet in einer Umgebung, die sich so verhält, wie er es möchte. Probleme treten auf, wenn jemand mehrere Computer verwenden muss. Vielleicht sprechen wir über einen Webserver, einen Desktop-Computer, einen Computer, der die Rolle einer Firewall spielt, und ein paar Dutzend Raspberry Pi. Wie konfigurieren Sie alle diese Systeme auf die gleiche Weise? Und wie halten Sie die Einstellungen auf dem neuesten Stand, nachdem sie alle auf die gleiche Weise konfiguriert wurden?



Mehrere Optionen zum Synchronisieren von Einstellungen



Tatsächlich gibt es verschiedene Möglichkeiten, Linux-Systemeinstellungen zu synchronisieren. Da diese Einstellungen normalerweise in einer Art von Dateien gespeichert sind, kann fast jeder Synchronisationsmechanismus verwendet werden, um unser Problem zu lösen. Dies wird einige Zeit dauern, aber als Ergebnis können Sie erreichen, was Sie wollen. Angenommen, Sie können alle Konfigurationsdateien in einem Verzeichnis ablegen und dann symbolische Links zu diesen Dateien an den richtigen Stellen in Ihrem Home-Verzeichnis platzieren. Außerdem können Sie rsync



diesen Ordner mithilfe verschiedener Systeme synchronisieren.



Wenn Sie mit Git vertraut sind, haben Sie bereits eine andere Option zur Lösung dieses Problems erraten. Hier haben Sie neben der Möglichkeit, Einstellungen zu synchronisieren, auch die Möglichkeit zu erfahren, was und wann in Ihren Konfigurationsdateien geändert wurde. In der Tat, ich bin in einem Material von ungewöhnlichen Möglichkeiten , die Git zu verwenden, hat darüber gesprochen, meine zeigen Systemeinstellungen Synchronisation, basierend auf Git. Kürzlich entdeckte ich jedoch, dass es ein System namens chezmoi gibt , das in Go geschrieben ist und einen Ansatz zum Synchronisieren von Einstellungen verwendet, der sich von meinem völlig unterscheidet.



Chezmoi-Funktionen



Entsprechend den Daten aus dem Projekt-Repository chezmoi



bietet es dem Benutzer die folgenden Optionen:



  • Eine deklarative Beschreibung des gewünschten Status der Home-Verzeichnisdateien.
  • Verwenden von Vorlagen zum Erstellen von Dateien.
  • Die Sicherheit der Arbeit wird durch die Integration in Bitwarden, in LastPass und in einige Programme zur lokalen Speicherung von Schlüsseln gewährleistet.
  • Unterstützung für die Behandlung atomarer Updates. Dies schützt das System vor einem "Zwischenzustand".
  • Unterstützung für mehrere Betriebssysteme.
  • Der Benutzer wird über die geplanten Aktionen informiert, der "Testlauf" -Modus wird unterstützt.
  • Hohe Arbeitsgeschwindigkeit, die Möglichkeit zu wählen, welche in Verbindung mit chezmoi



    dem Versionskontrollsystem verwendet wird.


Es sieht alles sehr interessant aus. Das Verfahren zur Installation des Dienstprogramms unter verschiedenen Betriebssystemen weist seine eigenen Besonderheiten auf. Die entsprechenden Anweisungen finden Sie im Projekt-Repository.



Mit chezmoi



Es chezmoi



überrascht nicht, dass die ausführbare Datei, die den Zugriff auf die Funktionen ermöglicht , den Namen des Projekts wiederholt. Es unterstützt mehrere Befehle, unter denen ich Folgendes beachten möchte:



  • add



    - Hinzufügen einer Datei zur Liste der vom System verwalteten Dateien.
  • edit



    - Dateibearbeitung.
  • diff



    - herauszufinden, welche Änderungen gegebenenfalls noch in die Arbeitsversion der Datei aufgenommen werden müssen.
  • apply



    - Aufnahme von Änderungen, deren Genehmigung noch aussteht, in die Arbeitsversion der Datei.


Wenn dem System eine neue Datei hinzugefügt wird, wird eine Kopie davon im Verzeichnis abgelegt ~/.local/share/chezmoi



. chezmoi



Ignoriert aus Gründen der Kompatibilität mit Versionskontrollsystemen Dateien in diesem Verzeichnis, deren Name mit einem Punkt beginnt. Wenn Sie dem System beispielsweise eine Datei hinzufügen, .bashrc



wird diese automatisch in umbenannt dot_bashrc



.



Wenn nur diese Möglichkeiten chezmoi



begrenzt wären, gäbe es in diesem Dienstprogramm nichts Bemerkenswertes. Das Interessanteste dabei ist die Synchronisation von Dateikopien. Um dieses Problem zu lösen, chezmoi



wird ein externes Versionskontrollsystem verwendet. Aber was passiert, wenn einige Computer, deren Einstellungen synchronisiert werden, spezielle Einstellungen benötigen?



Unterstützung für spezielle Einstellungen



Auf einem Desktop-Computer müssen Sie beispielsweise eine benutzerdefinierte Eingabeaufforderung verwenden. Auf dem Server, in der Firewall und auf den Raspberry Pi-Computern werden Sie mit der üblichen Einladung zufrieden sein. Dies bedeutet, dass auf jedem Computer in der Datei .bashrc



ein spezieller Parameterwert vorhanden sein muss PS1



.



Dies kann durch Hinzufügen der entsprechenden Einträge zum Abschnitt der data



Datei erfolgen chezmoi.yaml



. Tatsächlich können Sie hier insbesondere verschiedene Formate verwenden - JSON



und TOML



. Diese Datei ist für jeden Computer eindeutig. Hier können Sie Änderungen an Vorlagendateien vornehmen. Beispielsweise kann ein chezmoi.yaml



Desktop-Computer einen Eintrag über enthaltenPS1String



Ein ähnlicher Eintrag, der die komplexen Einstellungen für die Eingabeaufforderung beschreibt, und in derselben Datei für den Raspberry Pi wird bereits viel einfacher angeordnet.



Um eine bestimmte Datei auf dem System hinzuzufügen , das als Vorlage verwendet werden (zB eine Datei .bashrc



), müssen Sie die verwenden -T



Befehl Option add



. Die auf basierende Vorlagendatei .bashrc



hat einen Namen dot_bashrc.tmpl



. Die Standardmechanismen für Go-Vorlagen chezmoi



bieten dem Benutzer eine Vielzahl von Optionen. Darüber hinaus chezmoi



können Sie Variablen verwenden, mit denen Sie beispielsweise mit dem Computernamen und dem Benutzernamen sowie mit Betriebssystem- und Architekturkennungen arbeiten können.



Dank der in verwendeten Funktionenchezmoi



In der Vorlagensprache hat der Benutzer viel mehr Freiheit als nur die Verwendung von Variablen. Insbesondere in Vorlagen können Sie Bedingungen verwenden. Zum Beispiel kann es so aussehen:



#  
export EDITOR=vi
 
# ,    
{{- if eq .chezmoi.hostname "work-laptop" }}
#     ~/<code>.bashrc</code>  work-laptop
{{- end }}

      
      





Sicherheit



Chezmoi



erkennt private Dateien und verarbeitet sie entsprechend. Wenn ein Verzeichnis also privat ist chezmoi



, verwendet das System ein Präfix, private_



wenn privaten Dateien Namen zugewiesen werden (beispielsweise kann der Name einer solchen Datei so aussehen private_dot_bashrc



).



Es wird davon ausgegangen, dass ein Versionskontrollsystem zum Organisieren der Dateisynchronisierung verwendet wird. Mit anderen Worten, wenn Sie einen neuen Computer einrichten oder die Einstellungen eines bestimmten Computers aktualisieren, synchronisieren Sie den Inhalt des Verzeichnisses chezmoi



mit einer Kopie der Einstellungen, die im Versionskontrollsystem gespeichert sind. Dann wird alles, was in der Konfigurationsdatei konfiguriert werden muss, und die Änderungen werden angewendet, möglicherweise mit einer vorläufigen Überprüfung, welche Änderungen angewendet werden.



Dies bedeutet natürlich, dass die gespeicherten Dateien so "privat" sind, wie es das Versionskontrollsystem zulässt. Wenn Sie Ihre Konfigurationsdateien auf einem öffentlichen System veröffentlichen, bedeutet dies, dass von "Datenschutz" keine Rede mehr ist. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, ein Vorlagen-System zu verwenden und die Konfigurationsdatei nicht mit dem Versionskontrollsystem zu verarbeiten. Und da es für jeden Computer einzigartig ist, sollte es auf keinen Fall mit einem Versionskontrollsystem verarbeitet werden. Dies bedeutet unter anderem, dass es anders als andere Dateien gespeichert werden muss.



Angenommen, Sie haben einen Eintrag wie diesen in Ihrer Konfigurationsdatei:



hackaday:

   password: 0xdeadbeef

      
      





Das Passwort muss geheim gehalten werden. In öffentlichen Dateien kann die folgende Konstruktion verwendet werden:



password = {{ .hackaday.password }}

      
      





Bei der Arbeit mit chezmoi



können Sie weiterhin mit verschlüsselte Konfigurationsdateien verwenden gpg



.



Versionskontrollsystem



Wenn wir über Versionskontrollsysteme sprechen, chezmoi



gibt es Befehle zum Senden von Materialien an unterstützte Versionskontrollsysteme und dementsprechend Befehle zum Laden von Daten. Die Standardeinstellung wird verwendet git



, es gibt jedoch auch andere Optionen, z hg



. Die entsprechenden Einstellungen werden in der Konfigurationsdatei vorgenommen.



Es gibt auch Befehle, mit denen Sie einfach den vollständigen Satz von Konfigurationsdateien abrufen oder die Konfiguration exportieren können. Informationen zu diesen Befehlen finden Sie im Projekt-Repository. Standardmäßig werden alle Arbeiten im Ausgangsverzeichnis ausgeführt. Bei Bedarf können Sie das Programm jedoch so konfigurieren, dass es mit einem anderen Zielverzeichnis arbeitet.



Ergebnis



Insgesamt kann festgestellt werden, dass chezmoi



es sich um ein gut durchdachtes Projekt handelt. Aber ich habe hier nichts gesehen, was mich zwingen würde, chezmoi



von meinem Einstellungssynchronisationssystem zu wechseln . Wenn ich gestolpert wäre, chezmoi



als ich nur darüber nachdachte, wie ich das fragliche Problem lösen könnte, würde ich wahrscheinlich dieses spezielle Projekt verwenden und nicht mein eigenes erstellen. Ich behaupte nicht, dass das Template-System chezmoi



sehr gut ist, aber mein System erzielt einen ähnlichen Effekt, indem es je nach Umgebung unterschiedliche Dateien auswählt.



Eindeutige Einstellungsdateichezmoi



schwer mit der Versionskontrolle zu handhaben. Ja, Benutzer neigen normalerweise nicht dazu. Wenn das zum Speichern der Einstellungen verwendete Repository privat ist oder wenn private Informationen nicht in den Konfigurationsdateien enthalten sind, können Sie Optionen für die Einstellungsdatei in dieses System chezmoi



einfügen (z. B. gibt es möglicherweise eine Version dieser Datei für den Raspberry Pi und für normale Computer). Wenn Sie Ihren Computer zum ersten Mal einrichten, können Sie die entsprechende Datei umbenennen. Es ist jedoch wahrscheinlicher, dass die Systemeinstellungsdatei einfach kopiert wird. Der Ansatz, nach dem die Konfigurationsdateichezmoi



Wenn die Versionskontrolle nicht durchgeführt wird, besteht der Vorteil, dass Sie bei korrekter Konfiguration ein öffentliches Repository zum Speichern von Daten verwenden können.



Und für den Betrieb meines Systems ist es sehr wichtig, ein privates Repository zu verwenden - wenn nur derjenige, der es verwendet, sich nicht darum kümmert, seine Konfigurationsdateien öffentlich zugänglich zu machen. Alle Dateien werden jedoch mit einem Versionskontrollsystem verarbeitet. Mit dem System können Sie sich über alle Änderungen auf dem Laufenden halten, ohne Vorlagen verwenden zu müssen, deren Beherrschung einige Zeit in Anspruch nimmt. Sie müssen nur die Einstellungen in den entsprechenden Dateien platzieren. Die einzige Funktion, die ich meinem System ganz hinzufügen kann, inspiriert vonchezmoi



Dies ist die Möglichkeit, neue Dateien hinzuzufügen, die überwacht werden. Obwohl mein System das Synchronisieren von Einstellungen ermöglicht, müssen Sie jetzt manuell Dateien hinzufügen. Die Datei wird in ein spezielles Verzeichnis verschoben, wonach die Dateieinträge dem System hinzugefügt und ein symbolischer Link erstellt wird.



Aber dafür ist Linux gut. Es gibt viele Möglichkeiten, das gleiche Problem zu lösen. Wenn Sie eine Sache nicht mögen, können Sie etwas anderes finden. Und wenn Sie nichts mögen, können Sie ohne große Schwierigkeiten etwas Eigenes erstellen. Dies führt jedoch zu bestimmten Problemen, wenn viele normale Leute, die nicht daran gewöhnt sind, Linux verwenden. Sie möchten nicht aus vielen Optionen auswählen, sondern möchten eine einfache und klare Arbeitslösung. Und in der Linux-Community ist es im Gegenteil üblich, ständig alles mit allem zu vergleichen und mit Inbrunst darüber zu streiten, was besser ist - emacs



entweder vi



C oder Python.



Wie synchronisieren Sie die Einstellungen auf Linux-Computern?










All Articles