Revamp LTSP: Migration, Daten und Benutzer

From revampedia

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