/dev/blog/ID10T

ESXi: Ein paar Hilfsskripte und Komfortfunktionen

• Administration • Comments
Advertisement

Der VMware ESXi ist in vielen Punkten deutlich abgespeckt. Dementsprechend fehlen auch viele Komfortfunktionen, die einem das Arbeiten auf der Kommandozeile erleichtern würden. Ich werde hier ein paar meiner Lösungen vorstellen. Dabei beziehe ich mich einzig auf den root-Benutzer, da der in der Regel die Arbeiten auf der Shell erledigt. Dazu eine kurze Erklärung der beiden am Meisten benutzten Dateien: Die Datei /etc/profiles ist die Datei, die bei jedem Login per SSH ausgeführt wird. Sie ist mit der deutlich bekannteren bash.rc vergleichbar. Die Datei /etc/rc.local wird bei jedem Systemstart einmalig ausgeführt und ist in der Funktionsweise mit der in vielen Linux Distributionen vorhandenen gleichnamigen Datei weitestgehend identisch. Diese beiden Dateien nutze ich hauptsächlich, um mir den Arbeitsalltag zu erleichtern.

Shell Funktionen

Die ersten Anpassungen, die ich auf jedem Linux-System vornehme, sind eigene Aliases und Anpassungen der Standardbefehle. Beim ESXi werden diese Aliases in die Datei /etc/profiles geschrieben, wie ich schonmal beschrieben habe. Meine Anpassungen hier sind zwar banal, mir aber sehr wichtig.

alias ls='ls -A'
alias la='ls -lA'
alias ll='ls -l'
alias l='ls -A'
alias ..='cd ..'
alias ...='cd ../..'

Dann noch ein

source /etc/profiles

und die Aliases funktionieren.

Pfad für Usercsripts

Außerdem brauche ich auch einige Zusatzbefehle in Form von eigenen Skripten auf der Shell und auch im System. Allerdings lassen sich Userscripts nicht einfach in einem der Verzeichnisse der PATH-Variable - also /bin oder /sbin - ablegen, diese Verzeichnisse werden bei jedem Neustart vom ESXi zurückgesetzt. Auch gibt es kein Verzeichnis wie /usr/local/sbin, wie man es von diversen Linux Distributionen gewohnt ist. Deswegen lege ich meine Userscripts immer innerhalb des Datastores ab, etwa im Ordner /vmfs/volumes/datastore/administration/sbin. Um diese aber trotzdem ohne Pfadangabe ausführen zu können, gibt es zwei Stellen, an denen ihr den Pfad oder die Pfade zu euren eigenen Skripten angeben beziehungsweise ergänzen solltet.
Zuerst ist eine Anpassung der PATH-Variable in der /etc/profiles nötig. Dazu einfach die gewünschten Pfade vor dem export PATH-Befehl zur PATH-Variable hinzufügen.

PATH=$PATH:/vmfs/volumes/datastore/administration/sbin
export PATH

Nach einem

source /etc/profiles

sind die Scripts in der Shell verfügbar.
Wenn ihr sie allerdings in Cronjobs benutzen wollt, müsst ihr entweder den kompletten Pfad angeben oder die zweite Anpassung vornehmen. Diese muss in der Datei /etc/rc.local geschehen. In der zweiten Zeile solltet ihr dort eure benötigten Pfade ergänzen.

export PATH=/sbin:/bin:/vmfs/volumes/datastore/administration/sbin

Anschließend

source /etc/rc.local

und auch euer System kennt diese Pfade.

Symbolische Links und Cronjobs

Um mir die Navigation etwas zu erleichtern, lasse ich mir auch noch bei jedem Systemstart einige Symlinks erstellen. Diese kommen in die /etc/rc.local. Zusätzlich noch einen backup-Ordner, in dem die Backups abgelegt und weiterverarbeitet werden.

ln -s /vmfs/volumes/datastore/ /datastore
ln -s /vmfs/volumes/datastore/administration/sbin/ /userscripts
ln -s /vmfs/datastore/BACKUP /BACKUP
mkdir /backup

Zusätzlich werden in der /etc/rc.local auch noch sämtliche Cronjobs neu geschrieben, da auch die Datei /var/spool/cron/crontabs/root, in der die Cronjobs liegen, bei jedem Start wieder in ihren Ursprungszustand zurückversetzt wird.

/bin/kill $(cat /var/run/crond.pid)
/bin/echo "00 12 * * 6 /vmfs/volumes/datastore/administration/vm-backup.sh > /var/log/backup.log" >> /var/spool/cron/crontabs/root
/bin/busybox crond

Erst beende ich die aktuelle Cronjob-Instanz, dann werden alle Cronjobs per echo-Befehl an die Datei angehängt. Anschließend wird der Cron Daemon neu gestartet.

Nützliche Skripte

Abschließend will ich noch zwei Skripte vorstellen, die vom Funktionsablauf identisch sind, mir aber immer wieder helfen. Die Skripte starten den Cron Daemon beziehungsweise den Inet Daemon neu. Ich lasse sie unkommentiert und jeder kann selbst entscheiden, ob sie nützlich sind oder nicht. Mir haben sie grade bei der Einrichtung von Backup und Rsync geholfen.
Für den Crond sieht das so aus:

#!/bin/ash
echo "Alte PID fuer Cron:"
cat /var/run/crond.pid
echo "starte neu..."
kill $(cat /var/run/crond.pid)
sleep 1
crond
sleep 1
echo "Neue PID fuer Cron:"
cat /var/run/crond.pid

Und für den Inetd ändert es sich nur geringfügig:

#!/bin/ash
echo "Alte PID fuer Inetd:"
cat /var/run/inetd.pid
echo "starte neu..."
kill $(cat /var/run/inetd.pid)
sleep 1
inetd
sleep 1
echo "Neue PID fuer inetd:"
cat /var/run/inetd.pid

Nach diesem Hinzufügen von Aliases, Symlinks, Ordnern, Cronjobs und Userscripts ist der ESXi für mich direkt viel bedienbarer.

Advertisement
More posts
comments powered by isso

Advertisement