Hi zusammen,
Kurzer Ausschweif zur unausweichlichen Frage: Warum der Zirkus? War doch bisher auch nicht nötig.
Mit der 2.1 werden wir den Linux-Agenten, vor allem den Transport der Agent-Daten, um einige Features erweitern. Im klassischen Pull-Transport-Modell kommt eine TLS-Encryption dazu und wir arbeiten an einem Push-Transport.
Um das vernünftig umzusetzen, haben wir uns eine neue Architektur ausgedacht, die den Transport-Kanal und die Ausführung des Agenten klarer trennt. So ist es für uns einfacher möglich die verschiedenen Varianten sauber umzusetzen.
Ein Bild sagt mehr als 1000 Worte, also hab ich mal kurz mein Whiteboard bemüht. Hoffe es macht den Plan ausreichend klar:
Ich hoffe, dass das den Schritt etwas klarer macht.
Und nun noch zum konkreten Thema:
Die Post-Scripte der Paketinstallation sollen das Anlegen des Users ausführen. Der User wird - nach aktuellem Stand - mit folgender Logik angelegt:
# add cmk-agent system user
echo "Creating/updating cmk-agent user account..."
homedir="/var/lib/cmk-agent"
comment="Checkmk agent system user"
usershell="/bin/false"
if id cmk-agent >/dev/null 2>&1; then
# check that the existing user is as expected
existing="$(getent passwd cmk-agent)"
existing="${existing#cmk-agent:*:*:*:}"
expected="${comment}:${homedir}:${usershell}"
if [ "${existing}" != "${expected}" ]; then
echo "cmk-agent user found: expected '${expected}'" >&2
echo " but found '${existing}'" >&2
echo "Refusing to install with unexpected user properties." >&2
exit 1
fi
unset existing expected
else
useradd \
--comment "${comment}" \
--system \
--home-dir "${homedir}" \
--no-create-home \
--shell "${usershell}" \
cmk-agent || exit 1
fi
unset homedir comment usershell
Im Werk steht noch ein anderes Homeverzeichnis - wird noch korrigiert (@moritz ). Es ist auch durchaus möglich, dass sich an dem Mechanismus selber noch etwas ändert, aber so ist es jedenfalls aktuell gebaut.
Nach aktuellem Stand sollen Username, Comment, Shell und Homeverzeichnis fix sein. Die UIDs können wird natürlich nicht fixieren, da die Gegebenheiten auf den Systemen da draußen in der Welt sehr unterschiedlich sind. In lokalen Installationen wird das schon eher gehen.
Das klappt aber nur, wenn der User vor der Installation des Pakets angelegt wird, so wie es das Paket dann verlangt.
Viele Grüße
Lars