Revamp LTSP: Migration, Daten und Benutzer
Daten
Die gemeinsamen Daten werden von unserem alten LTSP /home/data
auf ein NAS (Hostname: nashorn) übertragen.
Von dort aus werden sie per NFS im LTSP eingebunden.
Die bestehenden home Verzeichnisse der Benutzer werden ebenso dorthin übertagen und noch während n-Tagen zur Verfügung gestellt.
Da im alten /home/data
ein grosses Chaos entstanden ist, wird dieses readonly gesetzt. Es wird ein neuer Ort für gemeinsame Daten zur verfügung gestellt. Eine geordnete Struktur wird ausgearbeitet. Siehe dazu auch: ltsp-acls-data-notes_cem.txt
Übernahme der Daten vom alten LTSP auf NAS(horn)
Die Daten verden vorgängig mittels rsync übertragen. Am Tag der Umstellung können diese dann, wiederum mittels rsync, aktualisiert werden. Das hat den Vorteil, dass es bei der aktualisierung wesentlich schneller geht.
Damit rsync die Benutzerrechte erhalten kann braucht dieses auf dem NAS root Rechte. Dazu einen Benutzer mit entsprechenden sudo Rechten einrichten:
/etc/sudoers
:
[...] # A user for syncing without password is required # to run sudo rsync (from remote) needed to preserve owner etc. syncuser ALL=NOPASSWD: /usr/bin/rsync
In untenstehendem Befehl wird rsync mittels der --rsync-path
Option mit sudo
ausgeführt.
rsync Befehle, home Verzeichnisse:
sudo rsync -aAXv --delete --rsync-path="sudo rsync" \ --exclude={".cache","Crash Reports","*minidump*","/data/","*.iso"} \ /home/ syncuser@192.168.10.20:/data/migration/home_ALT/
Daten:
sudo rsync -aAXv --delete --rsync-path="sudo rsync" \ --exclude={".cache","Crash Reports","*minidump*","*.iso"} \ /home/data/ syncuser@192.168.10.20:/data/migration/home_data_ALT/
Optional kann screen
vorangestellt werden um die Befehle von der shell "abzukoppeln".
Verzeichnis für neue Struktur auf nashorn: /data/data_share
NTP
NTP auf pingu-ltsp und nashorn installiert. Schweizer Pool in /etc/ntp.conf eingetragen.
NFS
Shares in /etc/exports
auf nashorn eingetragen.
/etc/fstab
auf pingu-ltsp entsprechend angepasst.
Damit UID und GID verwendet werden, muss in der fstab vers=3
als mount option eingetragen werden.
Siehe auch: http://serverfault.com/questions/520276/nfs-user-mapping
Mit exportfs -r
können Änderungen an der /etc/exports
neu geladen werden.
Benutzer
Die Benutzer Accounts sollen neu erstellt werden.
Liste der bestehenden user erzeugt. Auf altem ltsp:
$ ls /home > users.list
Auf pingu kopiert und sorgfältig von hand angepasst. (z.B. data, public usw. löschen)
Neue Benutzer mittels script erstellen. Script:
#!/bin/bash
#
# create new users using existing UID and GID
#
# cem, 2015-03-25
USER_LIST="users.list"
OLD_PASSWD_FILE="passwd_OLD"
OLD_SHADOW_FILE="shadow_OLD"
function create_user() {
# create user
#
# $1: username
local username="$1"
# passwd line
local passwd_line=$(grep "^${username}:" "$OLD_PASSWD_FILE")
echo $passwd_line
# get UID
local user_uid=$(cut -d ":" -f 3 <<< "$passwd_line")
# get GID
local user_gid=$(cut -d ":" -f 4 <<< "$passwd_line")
# get real name (entire field)
local user_gecos=$(cut -d ":" -f 5 <<< "$passwd_line")
# get encrypted password
local shadow_line=$(grep "^${username}:" "$OLD_SHADOW_FILE")
local user_hash=$(cut -d ":" -f 2 <<< "$shadow_line")
#echo "UID: $user_uid GID: $user_gid GECOS: $user_gecos"
#echo "Hash: $user_hash"
# add user group
groupadd -g "$user_gid" "$username"
# add user account
# -m create home
# -G supplementary groups
useradd -m -u "$user_uid" -g "$user_gid" -c "$user_gecos" -G revamp -s /bin/bash "$username"
# set quota
edquota -p quotauser "$username"
# write user/password file
echo "$username:$user_hash" >> userpass.list
}
while read username; do
echo "Handling user: $user"
# using a function here to encapsulate variables (local ...)
create_user "$username"
done < $USER_LIST
Dieselben Benutzer müssen auch auf dem NAS(horn) erzeugt werden. Jedoch brauchen diese dort keine home Verzeichnisse, quotas oder Passwörter. Siehe dazu auch: /data/Intern/Admin/pingu/createusers-script/
Die alten Passwörter können mittels Befehl aus der, vom Script, erstellten Liste übernommen werden:
cat userpass.list | sudo chpasswd -e