Software zum Synchronisieren von „/etc/profile“ und anderen Konfigurationsdateien mit mehreren Computern

Ich habe einen Raspberry Pi Homeserver mit Debian Wheezy darauf. Ich habe auch ein paar Ubuntu- und Debian-Boxen hier stehen, und ich würde diese gerne irgendwie verwalten. Konkret möchte ich Folgendes tun:

  • Verwenden Sie dieselben Software-Repositories auf den Computern mit derselben Ubuntu-Version. Also eine /etc/apt/sources.listfür alle Ubuntu und eine für Debian Stable und eine für Debian Wheezy.

  • Dieselben Benutzer auf allen Computern und dieselben Passwörter.

  • Dasselbe /etc/profile, damit sich die Anmeldung auf allen Computern gleich anfühlt.

Ich denke, für Benutzerdateien werde ich so etwas wie Samba oder so verwenden, aber die obigen Dinge klingen nach Konfigurationsverwaltung.

Bisher habe ich davon gehört:

  • Marionette
  • Koch
  • CF-Engine
  • Ansible
  • Salz

Aus dem Debian Wheezy-Repository scheint es, als wären alle außer Ansible im Repository. Ansible erfordert keine Softwareinstallation auf den anderen Computern, daher könnte ich einfach versuchen, das selbst zu packen oder von der Quelle zu installieren.

Ich habe nicht so viel Erfahrung mit der Verwaltung mehrerer Computer. Bisher hatte ich nur meinen einzigen Computer und das war es auch schon. Ich habe jedoch einen Programmierhintergrund. Könnten Sie mir bitte einen Vorschlag machen, mit welchem ​​Tool ich beginnen sollte?


Bisher habe ich zwei Stunden mit Puppet herumgespielt. Es scheint in der Lage zu sein, das zu tun, was ich will, es könnte nur ein bisschen zu viel sein.

Eine grobe Idee wäre, Git dafür zu verwenden (siehe zB Verwendung von Git zur Verwaltung einer Website ). Im Grunde verwalten Sie also alle Ihre (Konfigurations-)Dateien auf einem lokalen Computer und schieben sie nach dem Testen und OK in das "zentrale Repo" - wo sich ein post-receiveHook um die "Verteilung" kümmert (z. B. lokal auschecken und rsyncxfer verwenden). Zeug zu den anderen Maschinen). Fast kein Overhead. Klingt das akzeptabel?
Ich dachte darüber nach, ein ~/configuration/debian-wheezy/etc/profileund ein Skript zu haben, das diese Dateien auf alle Debian Wheezy-Rechner kopiert. Aber ich habe an anderer Stelle gelesen, dass dies für ein paar Tage gut sein könnte und in einem Albtraum enden wird, der gewartet werden muss, da dies nicht skaliert. Ich könnte etwas tun, wenn sich die anderen Optionen als übertrieben herausstellen, aber ich würde gerne ein Tool ausprobieren, das für den Job gemacht wurde, anstatt herumzubasteln.
OK, ich verstehe. Ich denke nur, dass Software wie CFEngine oder Puppet für nur wenige Maschinen ein wenig übertrieben sein könnte (über die anderen kann ich nichts sagen), also habe ich nur vorgeschlagen. Da ich mit keiner dieser Art arbeite, überlasse ich weitere Argumente besser jemandem mit mehr Wissen auf diesem Gebiet;)

Antworten (1)

Der kniffligere Teil hier ist das Synchronisieren der Benutzer (und Kennwörter), um eine einmalige Anmeldung (SSO) zu erstellen - für die /etc/apt/sources.listund die /etc/profileSie verwenden könnten, rsyncda sich diese Dateien wahrscheinlich nicht zu sehr ändern werden.

Einmalige Anmeldung

Für SSO benötigen Sie jedoch so etwas wie einen LDAP-Server (Lightweight Directory Access Protocol). Um dies zu installieren, führen Sie Folgendes auf Ihrem Servercomputer aus (für den Server würde ich Debian Stable empfehlen, führen Sie also Folgendes dort aus):

sudo aptitude install slapd ldap-utils

Sie werden aufgefordert, ein Passwort einzugeben, merken Sie es sich! Jetzt slapdsollte Sie nach einer Domain gefragt werden, aber aus dem Gedächtnis war es nicht bei mir, also führen Sie Folgendes aus, um das einzurichten:

sudo dpkg-reconfigure slapd

Wählen Sie auf dem ersten Bildschirm aus, nowie Sie die Konfiguration ändern möchten. Geben Sie dann einen Domänennamen ein (dies kann alles sein, da er sich im lokalen Netzwerk befindet, ich werde hier mylovelyserver.lan als Beispieldomäne verwenden). Geben Sie dann einen Organisationsnamen ein (auch dies kann alles sein, sagen Sie My Lovely Server ). Geben Sie dann ein Passwort für den Administrator ein. Konto und geben Sie es erneut ein, wenn Sie dazu aufgefordert werden. Wählen Sie dann HDBals Datenbank aus ( BDBvorher nicht verwendet, nicht ganz sicher, was der Unterschied ist!). Sagen noSie, dass die Datenbank gelöscht werden soll, wenn Sie dazu aufgefordert werden. Wählen Sie yes, wenn Sie dazu aufgefordert werden, die alte Datenbank zu verschieben. Sagen noSie, LDAPv2 zuzulassen (es ist alt und für die Kompatibilität nicht erforderlich).

Auf diesem sollte jetzt ein LDAP-Server laufen, der jedoch verwaltet werden muss. Früher habe ich das über die Befehlszeile gemacht, aber das war ehrlich gesagt eine Qual. Verwenden Sie stattdessen phpldapadmin- es ist eine grafische Weboberfläche zum Verwalten von LDAP-Servern. Dies erfordert einen Webserver, den ich nginXhier verwenden werde, da er leicht und gut für den Job ist. Führen Sie also zur Installation Folgendes aus:

sudo aptitude install php5-fpm php5-cli php5-ldap php-apc phpldapadmin nginx

Als nächstes müssen Sie bearbeiten /etc/phpldapadmin/config.php, um die Einstellungen auf Ihre eigenen zu ändern:

sudo nano /etc/phpldapadmin/config.php

Ändere das:$servers->setValue('server','base',array('dc=example,dc=com'));

Dazu:$servers->setValue('server','base',array('dc=mylovelyserver,dc=lan'))

Und das ändern:$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');

Dazu:$servers->setValue('login','bind_id','cn=admin,dc=mylovelyserver,dc=lan');

Jetzt müssen Sie dem Webserver (nginX) mitteilen, von wo aus der phpldapadmin bereitgestellt werden soll. Öffnen Sie also Folgendes:

sudo nano /etc/nginx/sites-available/default

Löschen Sie den serverHauptblock und fügen Sie Folgendes hinzu:

server {
        root /usr/share/phpldapadmin/htdocs;
        index index.php index.html;
        server_name localhost;
        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

Starten Sie dann den Webserver neu:

sudo service nginx restart

Öffnen Sie nun einen Browser und gehen Sie zu http://localhostoder zur IP-Adresse des Servers. Sie sollten sich auf der phpLDAPadmin-Seite befinden, auf Login klicken (links) und den Admin eingeben. Benutzername und Passwort oben eingerichtet.

Klicken Sie Create new entry hereauf (links). Erstellen Sie zuerst eine Gruppe (Generic: POSIX Group). Geben Sie einen Namen für die Gruppe ein (ich verwende ldapgroup als Beispiel). Klicken Sie Create objectdann auf commit.

Gehen Sie genauso vor, um einen neuen Benutzer zu erstellen, indem Sie die gerade erstellte Gruppe auswählen. Füllen Sie die erforderlichen Felder aus.

Das ist der serverseitige Kram! Nun zur Client-Seite (die anderen Debian, Ubuntu und Raspberry Pi(s)).

Installieren Sie auf den Clients Folgendes:

sudo aptitude install libpam-ldapd libnss-ldapd

Geben Sie auf dem ersten Setup-Bildschirm die Adresse des localhost-Servers einldap://127.0.0.1

Geben Sie dann die Suchbasis des LDAP-Servers eindc=mylovelyserver,dc=lan

Wenn Sie gefragt werden, welche Namensdienste konfiguriert werden sollen, wählen Sie dort einfach alles aus (mit der Leertaste..).

Die Bearbeitung /etc/pam.d/common-sessiondurch Ausführen von:

sudo nano /etc/pam.d/common-session

Folgendes am Ende der Datei hinzufügen:

session required pam_mkhomedir.so umask=0022 skel=/etc/skel

Die Client-Authentifizierung sollte jetzt eingerichtet werden, wenn Sie Folgendes ausführen, sollte der zuvor hinzugefügte Benutzer am Ende der Ausgabe von angezeigt werden:

sudo getent passwd

Öffnen Sie eine SSH-Verbindung zum LDAP-Benutzer und es sollte jetzt funktionieren!

Damit sind die Bits für Benutzername und Passwort (SSO) erledigt. Jetzt haben Sie das Synchronisieren /homevon Verzeichnissen nicht erwähnt, also lasse ich das jetzt, es sei denn, Sie brauchen das auch (es dauert ein bisschen mehr Einrichtung).

Synchronisieren von Konfigurationsdateien

Sie haben hier ein paar Optionen, denke ich, mit /etc/apt/sources.listund /etc/profile. Es gibt rsync(und SSH mit rsync), cfengine(wie Sie gesagt haben, wahrscheinlich zu viel dafür) und git(Sie könnten ein Repo erstellen. dann verwenden Sie das). Obwohl ich keine proprietäre Software mag, könnte Dropbox hier die Antwort sein (oder OwnCloud, wenn Sie das einrichten wollten, aber wieder für ein paar Konfigurationsdateien, wahrscheinlich ein wenig übertrieben).

Dropbox hat eine schöne .deb-Datei für Debian/Ubuntu (und RPMs usw. für Red Hat-basierte Systeme), also holen Sie sich diese von der Dropbox-Website (oder verwenden Sie das Python-Skript hier: http://wiki.getdropbox.com/DropboxAddons/ DropboxLinuxCLI , wenn Sie die GUI-Version nicht verwenden möchten).

Erstellen Sie ein Verzeichnis in Ihrem Dropbox-Verzeichnis, nachdem Sie Dropbox installiert haben:

mkdir -p ~/Dropbox/configs

Fügen Sie die Konfigurationsdateien hinzu, die Sie in diesem Verzeichnis freigeben möchten.

Erstellen Sie dann auf jedem Client einen symbolischen Link (Symlink) zu den Konfigurationsdateien, die Sie freigeben möchten:

sudo ln -s ~/Dropbox/configs/sources.list /etc/apt/sources.list
sudo ln -s ~/Dropbox/configs/profile /etc/profile

Und das sollte Ihre Dateien synchronisiert haben! Für weitere Lektüre usw. werfen Sie einen Blick auf die Ubuntu LDAP- und RSync-Dokumente und Community-Wikis, ich fand sie etwas einfacher als die Debian-Dokumente!

Sehen Sie sich für die gemeinsame Nutzung von /homeVerzeichnissen auch NFS (Network File System) und LDAP an.

Habe gerade gemerkt, dass das ein langer Beitrag war..

Der LDAP-Teil sieht gut aus, jemand sagte, dass er auch Caching unterstützt, damit Laptops außerhalb des Netzwerks verwendet werden können. Das Kopieren der Dateien mit rsyncist zwar möglich. Ich werde Dropbox auf keinen Fall verwenden, um meine Systemkonfiguration zu verwalten, es müsste als Root ausgeführt werden. Ich habe keine guten Erfahrungen mit ownCloud oder PHP, es ist ruckelig langsam und man könnte nicht wirklich mehr Hardware darauf werfen als ich (Opteron, 16 GB). Für die gemeinsame Nutzung von Home-Verzeichnissen werde ich wahrscheinlich Samba verwenden.
Ja, ich fand auch OwnCloud langsam. Ich würde NFS über Samba jeden Tag empfehlen, ich fand es einfacher einzurichten und schneller. Außerdem ist Sambas wichtigster "guter Punkt" die Windows-Unterstützung, die Sie anscheinend nicht benötigen.
Samba ist bereits eingerichtet. Es gibt hier zwei Windows-Computer, aber einer ist für Spiele und der andere für meine GFs, also müssen sie nicht so genau verwaltet werden.