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.list
fü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:
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.
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.list
und die /etc/profile
Sie verwenden könnten, rsync
da 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 slapd
sollte 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, no
wie 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 HDB
als Datenbank aus ( BDB
vorher nicht verwendet, nicht ganz sicher, was der Unterschied ist!). Sagen no
Sie, 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 no
Sie, 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 nginX
hier 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 server
Hauptblock 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://localhost
oder 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 here
auf (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 object
dann 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-session
durch 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 /home
von 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.list
und /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 /home
Verzeichnissen auch NFS (Network File System) und LDAP an.
Habe gerade gemerkt, dass das ein langer Beitrag war..
rsync
ist 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.
Izzy
post-receive
Hook um die "Verteilung" kümmert (z. B. lokal auschecken undrsync
xfer verwenden). Zeug zu den anderen Maschinen). Fast kein Overhead. Klingt das akzeptabel?Martin Üding
~/configuration/debian-wheezy/etc/profile
und 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.Izzy